My test is under Debian Lenny
The SQL client was from Windows - SQLyog.
MySQL v5.0.51a-24+Lenny4
concurrent_insert = 1
innodb_commit_concurrency = 0


> Hi,
>
> I just tested it out here as well:
> mysql> CREATE TABLE `care_person` (   `pid` int(11) unsigned NOT NULL
> AUTO_INCREMENT,   `name` varchar(60) NOT NULL,   PRIMARY KEY (`pid`) )
> ENGINE=InnoDB DEFAULT CHARSET=utf8;
> Query OK, 0 rows affected (0.02 sec)
>
> mysql> INSERT INTO `care_person` (`pid`, `name`) VALUES (10000000,
> 'Donald');
> Query OK, 1 row affected (0.00 sec)
>
> mysql> SELECT LAST_INSERT_ID();
> +------------------+
> | LAST_INSERT_ID() |
> +------------------+
> |         10000001 |
> +------------------+
> 1 row in set (0.00 sec)
>
> So we have a different behaviour under windows and linux. But I would no
> like to have such autoincrement decrements (AI - 1) in the code
> (readability, maintainability, reliability.. in case that this will be
> fixed by mysql later it would be a real ugly workaround what might bring
> working HIS outside in real trouble by updating mysql).
>
> Before doing that, I would suggest to create an dummy record in
> care_person. (if adodb does not support here any suggestion on that
> issue)
>
> Robert
>
>
>
>
> Am Mittwoch, den 29.09.2010, 15:49 +0530 schrieb Ap.Muthu:
>> Hi Robert,
>>
>> I have tested it to be a MySQL issue and not a ADOdb issue.
>> On execution of the said statements, I get the Last Insert ID as 0.
>> So our care2x code seems to be inserting this kind of insert sql.
>> Possibly if we altered the AUTO_INCREMENT value on the table to be
>> (10000000 - 1)
>> and then performed a normal SQL insert without the
>> AUTO_INCREMENT field "pid", we might be able avoid such issues.
>>
>> CREATE TABLE `care_person` (
>> `pid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
>> `name` VARCHAR(60) NOT NULL,
>> PRIMARY KEY (`pid`)
>> )  ENGINE=INNODB DEFAULT CHARSET=utf8;
>>
>> The attached pre-test image is the situation just after table creation.
>>
>> INSERT INTO `care_person` (`pid`, `name`) VALUES (10000000, 'Robert');
>>
>> SELECT LAST_INSERT_ID();
>>
>>
>> After execution of the said 3 sqls, the backup schema of the table is:
>>
>> CREATE TABLE `care_person` (
>>   `pid` int(11) unsigned NOT NULL auto_increment,
>>   `name` varchar(60) NOT NULL,
>>   PRIMARY KEY  (`pid`)
>> ) ENGINE=InnoDB AUTO_INCREMENT=10000001 DEFAULT CHARSET=utf8;
>>
>> The attached mess image is taken after all the above SQLs have been
>> executed.
>>
>> Regards,
>> Ap.Muthu
>>
>> > Sorry, I do not get the point. When you do that then you will have the
>> > query result of LAST_INSERT_ID() 10000001....
>> >
>> > There is on table definition an autoincrement and you give in your
>> > insert statement an fixed value to it? The result is always strange
>> > (guess it will be 10000001 instead of 10000000 - not tested so
>> > far...why?)
>> >
>> >
>> > Do do you want to make me busy? :-)
>> >
>> > Robert
>> >
>> >
>> > Am Mittwoch, den 29.09.2010, 15:12 +0530 schrieb Ap.Muthu:
>> >> Hi Robert,
>> >>
>> >> Try to make the table without any records and the default 
>> >> AUTO_INCREMENT
>> >> to
>> >> start with should be 1 (if the parameter AUTO_INCREMENT=1is omitted).
>> >> Then make an insert with a pid = 10000000 in the insert statement and
>> >> check
>> >> the Last insert ID():
>> >>
>> >> CREATE TABLE `care_person` (
>> >> `pid` int(11) unsigned NOT NULL AUTO_INCREMENT,
>> >> `name` varchar(60) NOT NULL,
>> >> PRIMARY KEY (`pid`)
>> >> )  ENGINE=InnoDB DEFAULT CHARSET=utf8;
>> >>
>> >> INSERT INTO `care_person` (`pid`, `name`) VALUES (10000000, 'Robert');
>> >>
>> >> SELECT LAST_INSERT_ID();
>> >>
>> >> Regards,
>> >> Ap.Muthu
>> >>
>> >>
>> >> > ...I tested out with mysql client and standard call, and it worked
>> >> > perfectly:
>> >> >
>> >> > mysql> create database dropme;
>> >> > Query OK, 1 row affected (0.02 sec)
>> >> > mysql> \u dropme
>> >> > Database changed
>> >> > mysql> CREATE TABLE `care_person` (   `pid` int(11) unsigned NOT 
>> >> > NULL
>> >> > AUTO_INCREMENT,   `name` varchar(60) NOT NULL,   PRIMARY KEY 
>> >> > (`pid`) )
>> >> > ENGINE=InnoDB AUTO_INCREMENT=10000001 DEFAULT CHARSET=utf8;
>> >> > Query OK, 0 rows affected (0.06 sec)
>> >> > mysql> insert into care_person (name) VALUES ('Donald');
>> >> > Query OK, 1 row affected (0.00 sec)
>> >> >
>> >> > mysql> SELECT LAST_INSERT_ID();
>> >> > +------------------+
>> >> > | LAST_INSERT_ID() |
>> >> > +------------------+
>> >> > |         10000001 |
>> >> > +------------------+
>> >> > 1 row in set (0.00 sec)
>> >> >
>> >> > That would mean as logic consequence: MySQL does not have that issue 
>> >> > on
>> >> > my ubuntu here. But the behaviour of adodb method Insert_ID() had
>> >> > reproducibly that issue on the same ubuntu. Is there any reason not 
>> >> > to
>> >> > try with latest adbodb layer if that strange behaviour could be 
>> >> > covered
>> >> > with it?
>> >> >
>> >> > Robert



------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Care2002-developers mailing list
Care2002-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/care2002-developers

Reply via email to