Re: Duplicate entry '0' for key 'PRIMARY'
From: Jerry Stuckle <jstucklex_at_attglobal.net>
Date: Tue, 11 Apr 2017 08:36:17 -0400
Message-ID: <ociieb$p3q$1_at_jstuckle.eternal-september.org>
>
>
> No, if you make a default dump (not option given) you will get the id
> column too when you use primary key not null default 0.
>
> If you have had auto_increment from the start, the id will start from 1
> and you still have the id.
>
> The simple reason is that the dump do not guarantee that data will be in
> the same order as the primary key value and loading the dump could make
> your database inconsistent.
>
>
>
> The issue still there and wouldn't happen with a default dump.
>
>
> As the OP not given any more information, so all we say are just
> speculations.
>
>
Date: Tue, 11 Apr 2017 08:36:17 -0400
Message-ID: <ociieb$p3q$1_at_jstuckle.eternal-september.org>
On 4/11/2017 1:50 AM, J.O. Aho wrote:
> On 04/10/17 21:43, Thomas 'PointedEars' Lahn wrote:
>> J.O. Aho wrote:
>
>>>>> The problem is the backup file does not have the id column in it, >>>> >>>> It would be a very ill-conceived target table that has >>>> >>>> `id` INT(…) PRIMARY KEY DEFAULT '0' >>> >>> This would also require that original table didn't have the id (in your >>> example) column. >>> >>> as the data dump would otherwise have the primary key. >>> >>> INSERT INTO `t1` VALUES (0,'zero'),(1,'one'),(2,'two'); >> >> No, I have tested it. Jerry is correct about the possibility. >> >> In theory, if the target table has >> >> | mysql> SHOW CREATE TABLE `t1`\G >> | […] CREATE TABLE `t1` ( >> | `id` int(…) NOT NULL DEFAULT '0', >> | `foo` VARCHAR(50), >> | […] >> | PRIMARY KEY (`id`) >> | ) […] >> >> and the offending statement(s) is/are of the form >> >> INSERT INTO `t1` (`foo`) VALUES ('zero'),('one'),('two');
>
> No, if you make a default dump (not option given) you will get the id
> column too when you use primary key not null default 0.
>
> If you have had auto_increment from the start, the id will start from 1
> and you still have the id.
>
> The simple reason is that the dump do not guarantee that data will be in
> the same order as the primary key value and loading the dump could make
> your database inconsistent.
>
>
It's also quite possible (or even probable) that rows have been deleted, leaving gaps in the autoincrement values.
[Quoted] In either case the database will be seriously borked with foreign keys pointing at the wrong data.
>
>
>>> Just think of the idea where you wouldn't have the primary key and you >>> insert data into another database, which may been used and tables just >>> truncated, so then the auto_increment wouldn't necessarily start from 1 >>> and you would suddenly have an inconsistent database and a lot of errors >>> when key constraints wouldn't work. >> >> And yet it is a distinct possibility. For a dump of a single table instead >> of the whole database, it might even be intentional.
>
> The issue still there and wouldn't happen with a default dump.
>
>
> As the OP not given any more information, so all we say are just
> speculations.
>
>
And you're arguing with a well-known troll, J.O. He'll never admit he is wrong.
-- ================== Remove the "x" from my email address Jerry Stuckle jstucklex_at_attglobal.net ==================Received on Tue Apr 11 2017 - 14:36:17 CEST