本文来自向东的博客:http://www.xiangdong.org/blog/post/1756/
但本人有不同看法。。。
`source` char(255) NOT NULL,
`score` int(11) NOT NULL,
`score` int(11) NOT NULL,
Mysql设置NOT NULL 在pdo插入该字段source为空时候返回false,初看你就奇怪了,为何设置的时候为not null,但是在插入的时候会为null呢?
是这样的,当时开发时候的需求不很明显,但是最后在开发收尾的时候发现这个字段可有可无,而且我们提供的是接口调用,人家就会问了,你这个参数填写什么, 而很有可能就说那个参数啊,可以为空啊,呵呵,这下好了,那个字段刚好可能会出现NULL,和NOT NULL冲突,于是插入数据库出现返回false,而我们又是接口调用,尽量做到给用户返回成功的代码,于是这个插入数据库错误的问题可能会隐藏,最后解 决办法是将数据库source字段改为可以为null!
ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NOT NULL DEFAULT NULL
ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NULL DEFAULT NULL
ALTER TABLE `a` CHANGE `a` `a` INT( 11 ) NULL DEFAULT NULL
上面这段我还是觉得有问题的,一般情况话,如果设置了NOT NULL,那么default 还是设为0吧。除非你的0在系统中是特殊值。