原因分析:
引起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