this is a very good startup for the issue. now the question is where does it
get the value if there is no max(ai) or when I do an insert in an empty
table with the ai field set to 1 where does the innoDB get the next ai value
10720 ?

I assume that the SELECT MAX(ai_col) FROM t FOR UPDATE; return is
incremented by 1 so how does this end up with 10720?

anyway, ur statement shows that there has changed somethimg definately. but
maid be there is some flag telling the kernel that ai fields should be
unique throughout the database? some left behind of the cluster version of

"Nisse Engström" <> wrote in message
> On Sun, 9 Aug 2009 20:17:15 +0200, "Ralph Deffke" wrote:
> > I'm facing the fact that it seems that auto_increment fields in a table
> > start at 1 like it was in earlier versions even if I install mySQL brand
> > creating all tables new. it seems to me that auto_increments handling
> > changed to older version. is somebody out there who can give me a quick
> > background about auto_increment and how and if I can control the
behavior of
> > mySQL about them.
> Did you Google for it? I found the following page that
> might be relevant:
>    "Beginning with MySQL 5.1.22, InnoDB provides a locking
>     strategy that significantly improves scalability and
>     performance of SQL statements that add rows to tables
>     with AUTO_INCREMENT columns.
>     ...
>     InnoDB uses the following algorithm to initialize the
>     auto-increment counter for a table t that contains an
>     AUTO_INCREMENT column named ai_col: After a server
>     startup, for the first insert into a table t, InnoDB
>     executes the equivalent of this statement:
>       SELECT MAX(ai_col) FROM t FOR UPDATE;
>     InnoDB increments by one the value retrieved by the
>     statement and assigns it to the column and to the
>     auto-increment counter for the table."
> /Nisse

PHP General Mailing List (
To unsubscribe, visit:

Reply via email to