MySQL データベースを PostgreSQL に移植しています。これまでのところ、すべてのテーブルと列を再構築してデータをインポートすることができました。ただし、自動インクリメントされた一意のid
フィールドは正しく変換されていません。pgAdmin GUIを使用して、テーブル内の 1 つの列を修正しました。おそらく、MySQL から Postgres に変換するのは私が初めてではないので、自動化されたタスクとしてこれを行うための堅牢でテスト済みの方法があると思います。誰かがそのような小さなスクリプトを提供できれば幸いです。
ただし、これに対してテスト済みのソリューションが必要な主な理由は、シーケンスを追加して問題の列のデフォルト値を設定した後に問題が発生したためです。2069
シーケンスの現在の値は、最後のテーブル エントリの値である に正しく設定されました。プログラムを実行して行を追加すると、一意の値2069
が既に割り当てられているという例外が発生しました。プログラムを再度実行すると、新しい行が作成されましたが、自動インクリメントされた ID は2071
. スキップし2070
ました。
したがって、エラーの原因として考えられるのは次の 3 つです。
- PostgreSQL 9.5 のバグ
- Java JDBC コネクタのバグ
- 自動インクリメント フィールドとシーケンスを間違えました。
テスト済みのソリューションを使用することで、最後の可能性を排除できました。