1. 程式人生 > >Duplicate entry 't_id' for key 'PRIMARY' 錯誤

Duplicate entry 't_id' for key 'PRIMARY' 錯誤

錯誤

SQL 查詢:

INSERT INTO `new_table`.`eos_datas` ( 
`area_id` ,
`area_bid` ,
`factory` ,
`material` ,
`kind` ,
`width` ,
`thickness` ,
`price` ,
`time` ,
`status`

)
VALUES ('0', '0', '0', '0', '0', '0', '0', '13213', NOW( ) , '1')

MySQL 返回:文件

#1062 - Duplicate entry '127' for key 'PRIMARY'

資料表結構:

以上就是data_id這個主鍵問題。總是停在127上,不向前移動。
網上查詢一番,得到:

1。
重複了
你的那個id欄位有primary key或者唯一的屬性。不能重複的

2。
out range of ....(不記得了),改mysql->my.ini?

上面只是針對一般情況,還是解決不了。
刪掉最後一個數據可行,但接著就出錯了。
一看data_id為tinyint, 是表的設計有問題。改為int,ok.

網上也跪了一圈,也有和我一樣情況的。
如下:

找到原因了,貼出來大家看一下,應該有滿多朋友遇到的情況和我一樣。
這是我建表的命令
CREATE TABLE `employee_staff` (
   `staff_id` tinyint(10) NOT NULL auto_increment,
   `name` varchar(8) NOT NULL,
   `class` varchar(4) NOT NULL,
   `sector` varchar(10) NOT NULL,
   `group` varchar(14) NOT NULL,
   `staff` varchar(4) NOT NULL,
   `staff_time` varchar(10) NOT NULL,
   PRIMARY KEY   (`staff_id`)
) ENGINE=MyISAM   DEFAULT CHARSET=big5;
發現問題了嗎?問題就出在tinyint這個字元型別上面。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一個很小的整數。有符號的範圍是-128到127,無符號的範圍是0到255

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一個小整數。有符號的範圍是-32768到32767,無符號的範圍是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一箇中等大小整數。有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]
一個正常大小整數。有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
這是INT的一個同義詞。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]
一個大整數。有符號的範圍是-9223372036854775808到9223372036854775807,無符號的範圍是0到
18446744073709551615。

痛苦啊。研究了幾天,問題出在這。。不好好學SQL基礎,下場可悲啊。

http://www.php100.com/forum/read-htm-tid-2016.html

沒認真學過mysql,還是要出問題的。細節啊。。。