2

dumpdata最近、djangoを使用してリバースエンジニアリングを行ったレガシーデータベースから少し試してみましたinspectdb...これ以外は、すべてのクエリが正常に機能します。MySQL ワークベンチには、列が存在します。しかし、データをエクスポートしようとすると、次のようになります。

CommandError: Unable to serialize database: no such column: af_datper.locnac

使用tracebackしても、影響を与える行は明らかになりません ( http://dpaste.com/1DASN1Vを汚染しないようにここに貼り付けます)。

モデルフィールドはすでにその列の null 値を許可しており、列はデータベースに存在します (ワークベンチで見た場合、それをinspectdb選択しなかったでしょう...

正直なところ、他に何をすべきかわかりません。テイカーはいますか?

4

1 に答える 1

1

トレースバックを少し掘り下げると、次のようになります。

ファイル「venv/lib/python3.5/site-packages/django/db/backends/utils.py」、64 行目、実行中 return self.cursor.execute(sql, params) ファイル「venv/lib/python3.5」 /site-packages/django/db/backends/sqlite3/base.py"、323 行目、実行時に Database.Cursor.execute(self、query、params) sqlite3.OperationalError : no such column: af_datper.locnac

SQLite のドキュメントから:

schema-name を指定する場合は、「main」、「temp」、または接続されたデータベースの名前のいずれかでなければなりません。この場合、名前付きデータベースに新しいテーブルが作成されます。「TEMP」または「TEMPORARY」キーワードが「CREATE」と「TABLE」の間にある場合、一時データベースに新しいテーブルが作成されます。schema-name が「temp」でない限り、schema-name と TEMP または TEMPORARY キーワードの両方を指定するとエラーになります。スキーマ名が指定されておらず、TEMP キーワードが存在しない場合、テーブルはメイン データベースに作成されます。

つまり、がデータベースの名前であるか、 または のいずれかでない限り、sqlite はfoo.bar列名としてサポートしていません。foomaintemp

于 2016-04-24T05:53:48.687 に答える