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] > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]