键1的重复条目"2147483647"

Doy*_*ley 14 mysql

奇怪的问题我似乎无法理解.我在MySQL数据库中有一个表,具有以下结构......

    CREATE TABLE IF NOT EXISTS `tblbaseprices` (
  `base_id` bigint(11) NOT NULL auto_increment,
  `base_size` int(10) NOT NULL default '0',
  `base_label` varchar(250) default NULL,
  `base_price_1a` float default NULL,
  `base_price_2a` float default NULL,
  `base_price_3a` float default NULL,
  `base_price_1b` float default NULL,
  `base_price_2b` float default NULL,
  `base_price_3b` float default NULL,
  `site_id` int(11) default NULL,
  PRIMARY KEY  (`base_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=134 ;
Run Code Online (Sandbox Code Playgroud)

我在那里的最后一个base_id是132.我假设有几条记录被删除,auto_increment被设置为134,你可以看到.我试图运行以下SQL语句,当我这样做时,我得到错误"重复条目'2147483647'为键1".

INSERT INTO tblbaseprices (site_id, base_size, base_price_1a, base_price_2a, base_price_3a, base_price_4a) VALUES ('', '', '', '', '', '')
Run Code Online (Sandbox Code Playgroud)

有人有什么想法吗?

非常感谢!

arn*_*nep 16

2^31 ? 1 = 2,147,483,647 
Run Code Online (Sandbox Code Playgroud)

数字2,147,483,647是...计算中32位有符号整数的最大值

  • 作为此答案的补充,如果您将“ int”用作表的主要自动增量列,则上述数字是您可以拥有的最大值。使用`bigint`可以克服这个限制。 (2认同)

use*_*374 5

2147483647是mysql的最大int值。只需将类型从int更改为bigint。


Dev*_*art 4

使用您的代码,我收到此错误 - “字段列表”中的未知列“base_price_4a”。这意味着您正在尝试插入另一个表(可能在另一个模式中),并且该表具有主键 INT 和 AUTO_INCRMENT=2147483647。