我试图在MySQL中使用可为空值的2字符字段。当我运行我的manage.py syncdb命令时,它会将我的数据加载到MySQL表中,但会产生以下错误:Django将字符串“(NULL)”插入到MySQL字段中,而不是NULL
文件“C:\ Python27 \ lib \ site-packages \ MySQLdb \ connections.py”,第36行,在defaulterrorhandler引发错误类,errorvalue DatabaseError:(1406,“数据太长,列'state_province'在第1行')
我发现问题是Django插入到表中的字符串”(NULL)“而不是SQL的NULL值。
在考虑中的字段是“州(省)”,这是空=真,空白=真模型中的定义,具有2
这里的长度是数据的样本集:
- model: myapp.Address
pk: 53
fields:
street_address: "71 South St"
city: cityname
state_province:
zip_code: 25455
countryID: 199
time_zone: -6
- model: myapp.Address
pk: 54
fields:
street_address: "123 lake street"
city: Townname
state_province: NH
zip_code: 12345
countryID: 199
time_zone: -5
编辑:我忘了链接,这个问题实际上到底发生了什么,但我不知道怎么纠正在Django这种行为,或从哪里开始: Inserting null into char(1)
使用SQLyog的看到的列,在MySQL字段的定义是: 州(省)[VARCHAR(2),NULL] 与之相对的街道地址: STREET_ADDRESS [VARCHAR(128),NOTNULL] – 2011-05-11 18:08:41
我刚做了一个数据转储,它看起来像被正确地转储为空,尽管除非长度为6个字符,否则我不能有一个字段为空的事实仍然是一个问题。 – 2011-05-11 18:11:15