Bug #33857 | mysql hangs on certain querys in strict mode | ||
---|---|---|---|
Submitted: | 14 Jan 2008 4:15 | Modified: | 15 Jan 2008 13:18 |
Reporter: | Oliver Gehring | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | MySQL Server | Severity: | S2 (Serious) |
Version: | 5.0.45 | OS: | Any (windows and linux) |
Assigned to: | CPU Architecture: | Any |
[14 Jan 2008 4:15]
Oliver Gehring
[14 Jan 2008 4:33]
Valeriy Kravchuk
Thank you for a problem report. Have you used mysql command line client to test? I am asking as I was not able to repeat the behaviour described: C:\Program Files\MySQL\MySQL Server 5.1\bin>mysql -uroot -proot test -P3308 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.0.54-enterprise-gpl-nt-log MySQL Enterprise Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> set @@sql_mode='strict_all_tables'; Query OK, 0 rows affected (0.05 sec) mysql> select @@sql_mode; +-------------------+ | @@sql_mode | +-------------------+ | STRICT_ALL_TABLES | +-------------------+ 1 row in set (0.00 sec) mysql> CREATE TABLE IF NOT EXISTS bugtestdb -> (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> f1 INT NOT NULL, -> f2 INT NOT NULL, -> t1 TEXT NOT NULL) -> ENGINE=MyISAM; Query OK, 0 rows affected (0.08 sec) mysql> INSERT INTO bugtestdb (f1,f2,t1) VALUES (22,33,'is that a bug?'); Query OK, 1 row affected (0.08 sec) mysql> INSERT INTO bugtestdb (f1) VALUES (22); ERROR 1364 (HY000): Field 'f2' doesn't have a default value Now, 2 statements in one line: mysql> INSERT INTO bugtestdb (f1,f2,t1) VALUES (22,33,'is that a bug?'); INSERT INTO bugtestdb (f1) VALUES (22); Query OK, 1 row affected (0.00 sec) ERROR 1364 (HY000): Field 'f2' doesn't have a default value Now your exact "How to repeat" pasted: mysql> SET sql_mode='STRICT_TRANS_TABLES'; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE IF NOT EXISTS bugtestdb -> (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -> f1 INT NOT NULL, -> f2 INT NOT NULL, -> t1 TEXT NOT NULL) -> ENGINE=MyISAM; Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> INSERT INTO bugtestdb (f1,f2,t1) VALUES (22,33,'is that a bug?'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO bugtestdb (f1) VALUES (22); ERROR 1364 (HY000): Field 'f2' doesn't have a default value
[14 Jan 2008 19:37]
Oliver Gehring
I have test this effect in follow enviroments: - PHP5-script with mysql-funktions on windows and linux - PHP5-script with mysqli-funktions on windows and linux - newest and older version of phpMyAdmin on windows and linux - commandline on an fresh installed mysql 5.0.45 in an winXP-sp2 dos-box on all this enviroments this error/effect exists! now i have this test once again, the same effect on all enviroments. i have made two screen-movies so you can see the effect with your own eyes. video-1 shows this effect in an XP-DOS-box with fresh installet mysql video-2 shows this effect in an phpMyAdmin on an test-server in both videos you can see mysql answers never when send two querys and the first query have an TEXT-field (the same when it is an BLOB) here you can get the videos: video-1 as avi: http://www.osone.net/bugmov/mysql-bug-movie.avi (..3MB) video-1 as zip: http://www.osone.net/bugmov/mysql-bug-movie.zip (..1MB) video-2 as avi: http://www.osone.net/bugmov/mysql-bug-movie-2.avi (..21MB) video-2 as zip: http://www.osone.net/bugmov/mysql-bug-movie-2.zip (..3MB) i hope now you can see it an you can it repeat.
[15 Jan 2008 13:18]
Oliver Gehring
completion: - you must show the video in full-screen-mode to see it correct (1280x1000) - i used the community-edition, not the enterprise - now i have it test on a account of an big german hoster (1und1), they have the newest mysql-version (5.0.45-community): the same effect! - importand: you must send the sql-query without "newline" between the statements!!! example: sql-1;sql-2;sql-3; ->send not: sql-1; ->send sql-1; ->send sql-1; ->send in practice: try not this: ------------- SET sql_mode='STRICT_TRANS_TABLES'; CREATE TABLE IF NOT EXISTS bugtestdb (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f1 INT NOT NULL, f2 INT NOT NULL, t1 TEXT NOT NULL) ENGINE=MyISAM; INSERT INTO bugtestdb (f1,f2,t1) VALUES (22,33,'is that a bug?'); INSERT INTO bugtestdb (f1) VALUES (22); try this: --------- SET sql_mode='STRICT_TRANS_TABLES';CREATE TABLE IF NOT EXISTS bugtestdb (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, f1 INT NOT NULL, f2 INT NOT NULL, t1 TEXT NOT NULL) ENGINE=MyISAM;INSERT INTO bugtestdb (f1,f2,t1) VALUES (22,33,'is that a bug?');INSERT INTO bugtestdb (f1) VALUES (22);