一個資料表 id ,name , value 其中 id 是主鍵,并且自增長。
一潭訓圈插入的陳述句。
insert into db (`name`,`value`) VALUES ('jack','welcome')
一直用的沒什么問題,今天在一臺win2008系統上運行程式,提示:
Duplicate entry '0' for key 'PRIMARY'
百思不得其解啊!!!!
直接在phpmyadmin中用陳述句插入,沒問題,但應用程式跑起來,就會提示 Duplicate entry '0' for key 'PRIMARY' !
為什么呢???
uj5u.com熱心網友回復:
主鍵重復,看下代碼是不是沒有生成自增主鍵uj5u.com熱心網友回復:
列印出來程式中的sql看下uj5u.com熱心網友回復:
insert into db (`id`,`name`,`value`) VALUES (null,'jack','welcome');uj5u.com熱心網友回復:
是innodb表么?插入之前是不是重啟過資料庫?uj5u.com熱心網友回復:
程式有地方把值默認設成0了uj5u.com熱心網友回復:
看下sql_mode變數是不是用了NO_AUTO_VALUE_ON_ZERO,使用了則只有NULL可以生成下一個序列號uj5u.com熱心網友回復:
檢查一下兩臺機器的sql mode有什么不同。uj5u.com熱心網友回復:
支持5樓的觀點,程式有地方把自增值的初始值設成0。uj5u.com熱心網友回復:
表的AUTO_INCREMENT 是不是被改了uj5u.com熱心網友回復:
既然主鍵是自增的,那就不要在程式中插入主鍵了,只差其他的欄位應該就沒問題了uj5u.com熱心網友回復:
程式有地方把自增值的初始值設成0。uj5u.com熱心網友回復:
innodb_autoinc_lock_mode=2uj5u.com熱心網友回復:
【1】innodb_autoinc_lock_mode 的說明innodb_auto_lockmode有三個取值:
1、0 這個表示tradition 傳統
2、1 這個表示consecutive 連續
3、2 這個表示interleaved 交錯
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/46792.html
標籤:MySQL
上一篇:mongo 如何關閉權限認證
