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,还是要出问题的。细节啊。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值