mysql error:#1062 Duplicate entry ‘***′ for key 1问题解决方法
程序员文章站
2023-12-17 20:22:22
我将id的int类型改成了bigint就可以了,其实再改回来可能也会好了。可能是数据库备份的时候出现了错误。开发的网站后台系统在测试过程中出现了这个问题: invalid...
我将id的int类型改成了bigint就可以了,其实再改回来可能也会好了。可能是数据库备份的时候出现了错误。
开发的网站后台系统在测试过程中出现了这个问题:
invalid query : duplicate entry ‘127′ for key 1
sql is : insert into `kq_news` (`title`,`author`,`type`,`content`,`isdel`,`adate`,`range`,`lang`) values ('捐款活动','yuanying','3′,”,'0′,now(),'2′,'cn')
因为是第一次遇到这样的问题,google了一下,类似问题n多,解决方法有很多雷同的,无非就是说修复表(repair),mysql的修复工具myisamchk工具修复。试了一下,仍然没有解决。
然后查看了一下数据表结构:
create table if not exists `kq_news` (
`id` tinyint(3) not null auto_increment,
`title` varchar(90) collate latin1_general_ci not null,
`content` text collate latin1_general_ci not null,
`adate` date not null,
`isdel` tinyint(1) not null default ‘0′,
`hits` int(5) not null default ‘0′,
`author` varchar(20) collate latin1_general_ci not null,
`type` tinyint(1) not null default ‘1′,
`lang` varchar(2) collate latin1_general_ci not null,
`range` tinyint(1) not null default ‘1′,
primary key (`id`)
) engine=myisam default charset=latin1 collate=latin1_general_ci ;
终于明白,原来是id这个自增型字段类型搞错了!转换一下数据类型就搞定了!
之后打开了mysql手册找到了tinyint和smallint和int类型的说明:
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。
原来如此!
那网上其它的invalid query : duplicate entry ‘32767′ for key 1出错的原因也在于此了!
开发的网站后台系统在测试过程中出现了这个问题:
invalid query : duplicate entry ‘127′ for key 1
sql is : insert into `kq_news` (`title`,`author`,`type`,`content`,`isdel`,`adate`,`range`,`lang`) values ('捐款活动','yuanying','3′,”,'0′,now(),'2′,'cn')
因为是第一次遇到这样的问题,google了一下,类似问题n多,解决方法有很多雷同的,无非就是说修复表(repair),mysql的修复工具myisamchk工具修复。试了一下,仍然没有解决。
然后查看了一下数据表结构:
复制代码 代码如下:
create table if not exists `kq_news` (
`id` tinyint(3) not null auto_increment,
`title` varchar(90) collate latin1_general_ci not null,
`content` text collate latin1_general_ci not null,
`adate` date not null,
`isdel` tinyint(1) not null default ‘0′,
`hits` int(5) not null default ‘0′,
`author` varchar(20) collate latin1_general_ci not null,
`type` tinyint(1) not null default ‘1′,
`lang` varchar(2) collate latin1_general_ci not null,
`range` tinyint(1) not null default ‘1′,
primary key (`id`)
) engine=myisam default charset=latin1 collate=latin1_general_ci ;
终于明白,原来是id这个自增型字段类型搞错了!转换一下数据类型就搞定了!
之后打开了mysql手册找到了tinyint和smallint和int类型的说明:
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。
原来如此!
那网上其它的invalid query : duplicate entry ‘32767′ for key 1出错的原因也在于此了!
推荐阅读
-
mysql error:#1062 Duplicate entry ‘***′ for key 1问题解决方法
-
SQL state ‘23000‘, error code ‘1062‘, message [Duplicate entry ‘2‘ for key ‘PRIMARY‘]-batch批处理问题小结
-
Duplicate entry '97112' for key 1_MySQL
-
mysql 出现Error: Duplicate entry “xxxx” for key 1解决办法
-
mysql error:#1062 Duplicate entry ‘***′ for key 1问题解决_MySQL
-
Duplicate entry '97112' for key 1_MySQL
-
Last_Errno: 1062,Last_Error: Error Duplicate entry_MySQL
-
1062 - Duplicate entry 33 for key 1_PHP教程
-
mysql error:#1062 Duplicate entry ‘***′ for key 1问题解决_MySQL
-
Last_Errno: 1062,Last_Error: Error Duplicate entry_MySQL