Duplicate entry '2147483647' for key 1

前端 未结 12 668
南笙
南笙 2020-12-18 21:41

Strange problem I can\'t seem to get my head around. I have a table in a MySQL database with the following structure...

    CREATE TABLE IF NOT EXISTS `tblb         


        
相关标签:
12条回答
  • 2020-12-18 22:40
    2^31 − 1 = 2,147,483,647 
    

    The number 2,147,483,647 is ... the maximum value for a 32-bit signed integer in computing

    0 讨论(0)
  • 2020-12-18 22:41

    You're inserting empty strings into numerical columns. As far as I can see, you're also inserting into a column that does not exist in the schema. My guess is this has something to do with your error.

    0 讨论(0)
  • 2020-12-18 22:41
    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 ;
    
    0 讨论(0)
  • 2020-12-18 22:41

    A good explanation of that is here: http://realtechtalk.com/Duplicate_entry_2147483647_for_key_PRIMARY_MySQL_Error_Solution-2015-articles

    Essentially you are trying to insert a value larger than the maximum size an INT supports which is literally the number being given to you in the error.

    If you are importing data than one of the fields contains a larger value than the INT size. You could also modify your table to be a BIGINT which would take care of the issue as well (of course at the cost of extra disk space).

    A common reason is that you are using some script generating large/random numbers. You should add some check to make sure the size is the same or lower than that maximum INT size of 2147483647 and you'll be good to go.

    0 讨论(0)
  • 2020-12-18 22:42

    Today I got the error duplicate key 2147483647

    I think it came out when I tried to insert a record into database from PhpMyAdmin, while typing, I also tried to enter the key value and it was eider lower than the current Next autoindex or I tried to type something like 99999999999999 as the key field, and that caused it to set Next autoindex to maximum

    Anyway, the erorr was caused because Next autoindex was 2147483647 for that table. My table was empty so I fixed it by this query:

    ALTER TABLE table_name AUTO_INCREMENT = 0
    

    if your table contains data, then replace 0 with your maximum key plus 1

    0 讨论(0)
  • 2020-12-18 22:43

    Try changing the auto_increment column to bigint instead of int, then the max value would be '9223372036854775807' or even '18446744073709551615' if you make it unsigned (no values below 0).

    Change your Auto_Increment to the last id in the column so it is continued where it left off.

    Be sure you do not delete auto_increment, otherwise it will continue to produce the error.

    0 讨论(0)
提交回复
热议问题