前几天意外之中遇到一个怪异的问题。由于我自己安装了双系统,win7+ubuntu,并且两个系统里面都有 mysql。我困惑的发现同样格式的table,同样的插入语句在 linux 下就插入成功,可是在 win7 下就失败...
下面是linux下运行的结果
图丢了
对一个int字段插入一个空字符串 '' 居然成功了!可是在 win7 下却死活不能插入成功。仔细看来,发现在 linux mysql 下执行这个插入动作之后会出现一个 warning。
mysql> show warnings; | Warning | 1366 | Incorrect integer value: '' for column 'value' at row 1 | 1 row in set (0.00 sec)
这和win7下的插入失败的 error 内容完全相符!
我跑去 stackoverflow 查了一下,最终发现了这个诡异的问题的根源,mysql 配置的默认值的问题...
这里是 stackoverflow 里有关这个问题的链接,讲的还是很详细的:Why can you insert characters into a MySQL int field?