sqliteから生成されたフィクスチャを、manage.py loaddataを使用してpostgresqlデータベースにロードします。長い名前のManyToManyFieldに到達すると読み込みに失敗しました。django loaddataによってProgram Errrorが発生しました:Postgresqlで長いテーブル名をロードするときに "..."がシーケンスではありません
私は、データベースアダプタにトレースさ:usr/local/lib/python2.6/dist-packages/django/db/backends/postgresql_psycopg2/base.py
ライン44
return self.cursor.execute(query, args)
はquery
の値が正しいです:'SELECT CURRVAL(\'"a_long_long_table_name_id_seq"\')'
しかし、それはDatabaseErrorで失敗しました: "a_long_long_table_name_i" は、配列ではありません
明らかにこのステートメントを実行した後に名前が切り捨てられますが、深くトレースすることはできません。
djangoバージョン:1.2
この問題を解決するにはどうすればよいですか?
Postgresの列名の最大長は64です。両方の例がそれよりもはるかに小さいです。エラーメッセージ自体が単純に列名を切り捨てている可能性があります。クエリを手動で実行するとどうなりますか? – Seth
'a_long_long_table_name_'はこれよりかなり長い実際のテーブル名ではありません。したがって、テーブル名は64文字未満でなければならないという厳しい制限があります。 – lcltj