Hi Heikki -
I tested the two connections in MySQL 4.0.26 and got the same results as
you did:
Connection 1:
mysql> create table t(a int primary key) type = innodb;
Query OK, 0 rows affected (0.13 sec)
mysql> create table t2(a int primary key, foreign key (a) references
t(a)) type = innodb;
Query OK, 0 rows affected (0.08 sec)
mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)
Connection 2:
mysql> insert into t2 values (10);
ERROR 1216: Cannot add or update a child row: a foreign key constraint
fails
mysql>
Am I right to assume that when a MySQL-client session ends the FK checks
is back to 1 automatically?
That when an EJB turns SET FOREIGN_KEY_CHECKS=0; WITHOUT SETing
FOREIGN_KEY_CHECKS=1; after a set of sql queries - the subsequent EJB
session termination by JBoss should restore the FK state checks=1?
I do realize that the prudent approach in the EJB is to turn the FK
check back to 1 at the conclusion of the sql queries - HOWEVER just as
(MySQL 4.1) mysqldump sets the FK checks to 0 at the top of the file
without setting it back to 1 at the bottom of the file I assume that
when the MySQL-client session ends - the FK's checks is set back to 1.
I am turning my attention now to JBoss-MySQL EJB session management and
any advice will be greatly appreciated.
Regards -
Noga
-----Original Message-----
From: Heikki Tuuri [mailto:[EMAIL PROTECTED]
Sent: Monday, November 21, 2005 4:21 AM
To: mysql@lists.mysql.com
Cc: Noga Woronoff
Subject: Re: Regarding SET FOREIGN_KEY_CHECKS=0;
Noga,
if SET FOREIGN_KEY_CHECKS=0 affects other connections to the database,
that
is a serious bug.
If you can repeat the problem, please file a bug report to
bugs.mysql.com
I tested this with 5.0.15, and it worked ok:
Connection 1:
[EMAIL PROTECTED]:~/mysql-5.0.15/client$ ./mysql test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.15-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> create table t(a int primary key) type = innodb;
Query OK, 0 rows affected, 1 warning (0.08 sec)
mysql> create table t2(a int primary key, foreign key (a) references
t(a))
type = innodb;
Query OK, 0 rows affected, 1 warning (0.03 sec)
mysql> set foreign_key_checks=0;
Query OK, 0 rows affected (0.00 sec)
mysql>
Connection 2:
[EMAIL PROTECTED]:~/mysql-5.0.15/client$ ./mysql test
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 5.0.15-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> insert into t2 values (10);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key
constraint fails (`test/t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`a`)
REFERENCES `t` (`a`))
mysql>
Best regards,
Heikki
Oracle Corp./Innobase Oy
InnoDB - transactions, row level locking, and foreign keys for MySQL
InnoDB Hot Backup - a hot backup tool for InnoDB which also backs up
MyISAM
tables
http://www.innodb.com/order.php
----- Original Message -----
From: ""Noga Woronoff"" <[EMAIL PROTECTED]>
Newsgroups: mailing.database.myodbc
Sent: Friday, November 18, 2005 11:56 PM
Subject: FW: Regarding SET FOREIGN_KEY_CHECKS=0;
Thank you Heikki!
We had a problem where code in one of our program's EJB did not turn
the
FK CHECK back to 1.
Another program that was started afterwards caused some bad data to be
inserted in the database - as though the FK CHECK was =3D 0. It wasn't
until we turned the FK CHECK back to 1 in the first program that the
second one started to behave correctly.
We use JBoss and MySQL 4.0.21.
Any feedback on the nature of JBoss-MySQL transaction management will
be
most helpful to us.
Thank you much in advance -
Noga
-----Original Message-----
From: Heikki Tuuri [mailto:[EMAIL PROTECTED]
Sent: Friday, November 18, 2005 2:56 PM
To: Noga Woronoff
Cc: Heikki Tuuri
Subject: Re: Regarding SET FOREIGN_KEY_CHECKS=3D0;
Noga,
please forward this communication to mysql@lists.mysql.com
mysql -u root -p -e "SET FOREIGN_KEY_CHECKS=3D0;" < /tmp/dump.sql
FOREIGN_KEY_CHECKS is a per-session variable. When the above shell=20
command returns, the session ends. Thus, no problem for others.
Regards,
Heikki
Oracle/Innobase
Noga Woronoff wrote:
Hi Heikki -
=20
=20
=20
I don't know which user group to use and wonder whether you may
answer
a
question for me?
=20
=20
=20
When you perform:
=20
mysql -u root -p -e "SET FOREIGN_KEY_CHECKS=3D0;" < /tmp/dump.sql
=20
=20
=20
Does the InnoDB engine set the foreign key checks back to 1 again,
automatically - once the database install is complete? Under what
circumstances one can get into trouble if the FK check is not set
back
to 1 at the end of the transaction? Is there a white paper I can
read
on the subject since I cannot find anything?
=20
=20
=20
Is there a way to check whether the FK check is turned ON/OF?
=20
=20
=20
Thanks you MUCH in advance and GOOD LUCK in your new Oracle
adventure!
=20
=20
=20
Noga Woronoff
=20
Interactive Constructs, Inc.
=20
200 Boston Ave. Suite #1800
=20
Medford, MA 02155
=20
=20
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:
http://lists.mysql.com/[EMAIL PROTECTED]