我从遗留数据库中尝试dumpdata
我最近使用django的inspectdb
进行了逆向工程...
除此之外,每个查询都可以。在MySQL工作台中,该列存在。
但是当我尝试导出数据时,我得到了:
CommandError: Unable to serialize database: no such column: af_datper.locnac
使用traceback
并未显示任何影响我的行(此处粘贴不会污染http://dpaste.com/1DASN1V)。
模型字段已经允许该列的空值,并且该列确实存在于数据库中(在使用工作台查看它时,inspectdb
不会将其拾起...
老实说,我不知道还能做什么。任何人?
答案 0 :(得分:1)
有点挖掘你的追溯,我看到了:
文件" venv / lib / python3.5 / site-packages / django / db / backends / utils.py", 第64行,执行中 return self.cursor.execute(sql,params)File" 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 documentation:
如果指定了模式名称,则它必须是" main"," temp",或者 附加数据库的名称。在这种情况下,新表是 在指定的数据库中创建。如果" TEMP"或" TEMPORARY"关键词 发生在" CREATE"和"表"然后创建新表 在临时数据库中。指定模式名称和。是错误的 TEMP或TEMPORARY关键字,除非模式名称是" temp"。如果不 指定了模式名称,然后TEMP关键字不存在 table在主数据库中创建。
简而言之,sqlite不支持foo.bar
作为列名,除非foo
是数据库的名称或main
或temp
之一。