Bug #75551 | sql_mode not respected properly in 5.6.15 | ||
---|---|---|---|
Submitted: | 19 Jan 2015 10:12 | Modified: | 26 Jan 2015 12:22 |
Reporter: | Simon Mudd (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Options | Severity: | S3 (Non-critical) |
Version: | 5.6.15 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | SQL_MODE |
[19 Jan 2015 10:12]
Simon Mudd
[19 Jan 2015 12:43]
MySQL Verification Team
I cannot repeat on 5.6.15: ./bin/mysqld_safe --no-defaults --sql_mode='NO_ENGINE_SUBSTITUTION' & mysql> select @@global.sql_mode; +------------------------+ | @@global.sql_mode | +------------------------+ | NO_ENGINE_SUBSTITUTION | +------------------------+ 1 row in set (0.00 sec) Maybe a duplicate entry in my.cnf (sql-mode vs sql_mode), or caps. Or a rogue my.cnf in another path?
[20 Jan 2015 7:03]
Simon Mudd
Shane, this was set via /etc/my.cnf having the value: [me@myhost ~]$ grep -3 sql_mode /etc/my.cnf sort_buffer_size = 1M # Per thread settings - end sql_mode = NO_ENGINE_SUBSTITUTION table_definition_cache = 3000 table_open_cache = 3000 [my@myhost ~]$ The running config of this server (with some details slightly modified to hide real hostnames/paths) is: [me@myhost ~]$ ps auwx | grep mysqld root 2472 0.0 0.0 108304 1672 ? S Jan15 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/path/to/datadir --pid-file=/path/to/datadir/myhost.pid mysql 3994 88.5 55.8 192705508 110689624 ? Sl Jan15 5918:47 /usr/sbin/mysqld --basedir=/usr --datadir=/path/to/datadir --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --open-files-limit=20000 --pid-file=/path/to/datadir/myhost.pid --socket=mysql.sock
[20 Jan 2015 10:31]
Valeriy Kravchuk
What about infamous /usr/my.cnf? I wonder if you have it and if it re-defined sql_mode.
[20 Jan 2015 18:04]
Sveta Smirnova
Thank you for the feedback. Please provide output of sudo -u mysql /usr/sbin/mysqld --verbose --help 2> /dev/null | grep -B 1 '/etc/my.cnf'
[20 Jan 2015 23:35]
Simon Mudd
[root@myhost ~]# sudo -u mysql /usr/sbin/mysqld --verbose --help 2> /dev/null | grep -B 1 '/etc/my.cnf' Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf [root@myhost ~]# cat /etc/my.cnf [mysqld] datadir = /var/lib/mysql socket = mysql.sock sql_mode = NO_ENGINE_SUBSTITUTION [mysqld_safe] log-error = /var/log/mysqld.log pid_file = /var/lib/mysql/mysqld.pid [mysql] no-auto-rehash default_character_set = utf8 prompt = \u@myhost [\d]>\_ [client] socket = /var/lib/mysql/mysql.sock [root@myhost ~]# cat /etc/mysql/my.cnf cat: /etc/mysql/my.cnf: No such file or directory [root@myhost ~]# cat /usr/etc/my.cnf cat: /usr/etc/my.cnf: No such file or directory [root@myhost ~]# cat ~/.my.cnf cat: /root/.my.cnf: No such file or directory [root@myhost ~]# So no, it doesn't look like a stray my.cnf file is to blame here.
[21 Jan 2015 11:17]
MySQL Verification Team
/// ####### Confirmed sql_mode settings in /etc/my.cnf and restarted mysql server [root@ushastry ushastry]# /etc/init.d/mysql restart Shutting down MySQL.. [ OK ] Starting MySQL.. [ OK ] [root@ushastry ushastry]# more /etc/my.cnf [mysqld] basedir=/usr datadir=/var/lib/mysql/ sql_mode = NO_ENGINE_SUBSTITUTION [root@ushastry ushastry]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.17 MySQL Community Server (GPL) . mysql> show variables like 'sql_mode'; +---------------+--------------------------------------------+ | Variable_name | Value | +---------------+--------------------------------------------+ | sql_mode | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | +---------------+--------------------------------------------+ 1 row in set (0.00 sec) // root@ushastry ushastry]# sudo -u mysql /usr/sbin/mysqld --verbose --help 2> /dev/null | grep -B 1 '/etc/my.cnf' Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf [root@ushastry ushastry]# ls -l /etc/my.cnf -rw-r--r--. 1 root root 44 Jan 21 16:19 /etc/my.cnf [root@ushastry ushastry]# ls -l /etc/mysql/my.cnf ls: cannot access /etc/mysql/my.cnf: No such file or directory [root@ushastry ushastry]# ls -l /usr/etc/my.cnf ls: cannot access /usr/etc/my.cnf: No such file or directory [root@ushastry ushastry]# ls -l ~/.my.cnf ls: cannot access /root/.my.cnf: No such file or directory ####### ####### Checked if there are any other my.cnf ####### [root@ushastry ushastry]# find / -name my.cnf /usr/share/mysql-test/suite/ndb/my.cnf /usr/share/mysql-test/suite/rpl/extension/bhs/my.cnf /usr/share/mysql-test/suite/rpl/my.cnf /usr/share/mysql-test/suite/ndb_rpl/my.cnf /usr/share/mysql-test/suite/ndb_team/my.cnf /usr/share/mysql-test/suite/federated/my.cnf /usr/share/mysql-test/suite/ndb_binlog/my.cnf /usr/share/mysql-test/suite/rpl_ndb/my.cnf /usr/share/mysql-test/suite/ndb_big/my.cnf /usr/my.cnf /etc/my.cnf ####### ####### existing /usr/my.cnf ####### [root@ushastry Downloads]# more /usr/my.cnf # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html [mysqld] # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. # basedir = ..... # datadir = ..... # port = ..... # server_id = ..... # socket = ..... # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES ####### ####### Will modify this file and see if this is the case ####### [root@ushastry Downloads]# [root@ushastry Downloads]# grep sql_mode /usr/my.cnf #sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES sql_mode=NO_ENGINE_SUBSTITUTION // restarted mysql server [root@ushastry Downloads]# /etc/init.d/mysql restart Shutting down MySQL.... [ OK ] Starting MySQL.. [ OK ] ####### ####### Confirm settings ####### [root@ushastry ushastry]# mysql -u root -p . Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show global variables like 'sql_mode'; +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | sql_mode | NO_ENGINE_SUBSTITUTION | +---------------+------------------------+ 1 row in set (0.01 sec) In my tests - /usr/my.cnf was culprit, after modifying that file it works as expected
[21 Jan 2015 11:20]
MySQL Verification Team
Hi Simon, Could you please check whether /usr/my.cnf exists in your environment? In my tests it caused issues as you can see in my previous note. Thanks, Umesh
[21 Jan 2015 11:53]
MySQL Verification Team
Also, pls see - http://bugs.mysql.com/bug.php?id=71600
[21 Jan 2015 15:42]
Simon Mudd
Hi. I need to be absolutely sure but yes, it does appear that this is related. Thanks for the headsup on it in bug#71600. I'll do a further check shortly, but it may take a short while to be able to confirm this.
[26 Jan 2015 12:22]
Simon Mudd
bug#71600 seems to explain this problem.