[ts-gen] shim-080326.tgz mysql scripts

R P Herrold herrold at owlriver.com
Thu Mar 27 22:59:27 EDT 2008


On Thu, 27 Mar 2008, Billy Pilgrim wrote:

> Thanks shim now builds fine however I am having a problem with the mysql
> database creation scripts. A few of generate syntax errors and not all
> the db tables are created.

> I did modify mysql.cnf as noted in the manual.
> 
> [mysqld]
> transaction-isolation=SERIALIZABLE
> sql-mode=ANSI

Russ herrold here ....

I did a bit of 'snippage' on your post to winnow it down to 
the core of the matter.  I assume you are referring to the 
discussion at '3.3.1 Set the Dbms Isolation Level' of 
manual.pdf

It appears that we need to do a re-write removing the 
conflation of MySQL's notion of 'ANSI' mode, and SERIALIZABLE 
for the mysqld.

The 'man' page for mysqld clarifies that the 'sql-mode=ANSI' 
has to do, 'the section called “THE SERVER SQL 
MODE”', with unspecificied 'more conformant' behaviours:


        The most important sql_mode values are probably these:
        ·  ANSI
           Change syntax and behavior to be more conformant to standard SQL.

-----------------------------------------------

rather than the **needed** feature of getting all four ACID 
elements enabled in the mysqld.  Particularly, the shim counts 
on the behaviours added with 'SERIALIZABLE', which refers to 
external documentation at the mysql website at:
 	See Section 4.6, “SET TRANSACTION Syntax”.

Stunningly wrong in breaking expectations, but probably for 
performance reasons, MySQL AB chooses to ship with:
 	The default level is REPEATABLE READ.
while Innodb can provide true 'Isolation' (The 'I' of 
dataabse ACID) if one sets the level to the documented:
 	SERIALIZABLE

see:
    http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-isolation.html
    http://en.wikipedia.org/wiki/ACID

-----------------------------------

Our config file is this simple:

[root at xps400 etc]# grep -v ^$ my.cnf | grep -v ^#
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1

[mysql.server]
user=mysql
basedir=/var/lib
[mysqld]
transaction-isolation = SERIALIZABLE
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[root at xps400 etc]#

-- Russ herrold


More information about the ts-general mailing list