2

我正在尝试dumpdata从一个遗留数据库中尝试,我最近使用 django 进行了逆向工程inspectdb......除此之外,每个查询都可以正常工作。在 MySQL 工作台中,该列存在。但是当试图导出我得到的数据时:

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

使用traceback不会显示我的任何影响(粘贴在这里不污染http://dpaste.com/1DASN1V)。

模型字段已经承认该列的空值并且该列确实存在于数据库中(在使用工作台看到它时,inspectdb不会捡起它......

老实说,我不知道还能做什么。有接盘侠吗?

4

1 回答 1

1

深入研究您的回溯,我看到了这一点:

文件“venv/lib/python3.5/site-packages/django/db/backends/utils.py”,第 64 行,在执行中返回 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:没有这样的列:af_datper.locnac

从 SQLite文档

如果指定了模式名称,它必须是“main”、“temp”或附加数据库的名称。在这种情况下,新表是在命名数据库中创建的。如果“CREATE”和“TABLE”之间出现“TEMP”或“TEMPORARY”关键字,则在临时数据库中创建新表。同时指定模式名和 TEMP 或 TEMPORARY 关键字是错误的,除非模式名是“temp”。如果未指定模式名称且 TEMP 关键字不存在,则在主数据库中创建表。

简而言之,sqlite 不支持foo.bar作为列名,除非foo是数据库名称或 ormain之一temp

于 2016-04-24T05:53:48.687 回答