MySQL中不能创建自增字段的解决方法,mysql字段
原因分析:
引起MySQL不能创建自动增加的字段的原因是在MySQL5.0.2版本中的The Server SQL Mode 中新加了几种 sql_mode,并且在sql的my.ini文件中的sql-mode 默认增加了其中的二种,一个是STRICT_TRANS_TABLES,就是导致auto_increament失败的mode,这个sql_mode主要用于 当一个值不能插入到表中是,则产生一个错误而不是一个警告并终止会话。
解决办法:
删除或注释掉sql_mode.重启mysql.
将my.ini中的:
# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
改为:
# Set the SQL mode to strict[separator]
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
如果是使用MyISAM引擎的表,可以有两种方式来设置表中自增字段的起始值,无需重建表。可以在mysql使用手册中查找下 alter table,然后查找 auto_increment 就可以看到手册中有关于自增id字段的起始值设定的方法:For MyISAM tables, you can set the first sequence number by executing SET INSERT_ID=value before ALTER TABLE or by using the AUTO_INCREMENT=value table option.意思是:如果是使用MyISAM引擎的表,可以通过执行SQL: "SET INSERT_ID=value";或者使用 alter table 语句修改表结构,然后加上 AUTO_INCREMENT = value 选项来指定自增起始值。
CREATE TABLE test2 (id INT PRIMARY KEY AUTO_INCREMENT, cname VARCHAR(10));
这样建立的id字段就是自增的,自增字段必须是int型,且要设为key