Django dumpdata无法序列化现有列

时间:2016-04-24 05:34:21

标签: mysql dumpdata inspectdb

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

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

使用traceback并未显示任何影响我的行(此处粘贴不会污染http://dpaste.com/1DASN1V)。

模型字段已经允许该列的空值,并且该列确实存在于数据库中(在使用工作台查看它时,inspectdb不会将其拾起...

老实说,我不知道还能做什么。任何人?

1 个答案:

答案 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是数据库的名称或maintemp之一。