表结构如下:
CREATE TABLE `testID` (
`ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`t_date` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
插入如下纪录:
INSERT INTO testID VALUES(0,NOW());查看表中数据时 ID并不是0而是自增的ID号,为什么不能插入0这条纪录呢。
可以把ID修改成0;

解决方案 »

  1.   

    sql_mode 系统变量中加上 NO_AUTO_VALUE_ON_ZERO
      

  2.   

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"
    NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。(不推荐采用该惯例)。例如,如果你用mysqldump转储表并重载,MySQL遇到0值一般会生成新的序列号,生成的表的内容与转储的表不同。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO可以解决该问题。
      

  3.   

    在你的C#程序中先设置一下SQL_MODE