2

最近、Django アプリで MySQL から PostgreSQL に切り替えました。すべてのシーケンスの最後の値を max に設定する必要があります。対応するテーブルと列の数。テーブルに関連するすべてのシーケンスを取得するにはどうすればよいですか? これまでのところ、私は次のようなことをしています:

SELECT sequence_name FROM information_schema.sequences 
WHERE sequence_name LIKE 'table_name%';

しかし、主に結果をさらにクリーンアップする必要があるため、このアプローチは好きではありません。テーブルとそのシーケンスを接続する ID はありますか。

Postgre の「自動インクリメント」が 1 から実行され、新しいオブジェクトの PK が既存のレコードと競合しているため、データベースにオブジェクトを追加できません。

注: 私の django アプリは非常に大きく、いくつかの追加パッケージを使用しているため、命名規則に一貫性がありません (テーブル名は app pefix の有無にかかわらず、PK 列は 'tableid' または 'table_id' のように 'id' だけで、すぐ)

4

3 に答える 3

11

あまり変わったことをしていないと仮定して、次の 2 つのクエリを試してください。

SELECT * FROM information_schema.sequences ;
SELECT * FROM information_schema.columns WHERE column_default LIKE 'nextval%';

それはあなたが知る必要があることを教えてくれるはずです。おそらく、column_defaultフィールドからシーケンス名を取り除くだけです。

于 2012-11-09T13:56:02.243 に答える
2

試してみてください:

python manage.py sqlsequencereset <appname>

psqlそれをcliにフィードします

HTH

于 2012-11-09T13:57:45.690 に答える