Bug #88032 | mysqld: Invalid default value for 'cached_time' | ||
---|---|---|---|
Submitted: | 9 Oct 2017 17:18 | Modified: | 30 Oct 2017 17:38 |
Reporter: | Simon Mudd (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Options | Severity: | S2 (Serious) |
Version: | 8.0.3 | OS: | CentOS (7) |
Assigned to: | CPU Architecture: | Any | |
Tags: | crash |
[9 Oct 2017 17:18]
Simon Mudd
[10 Oct 2017 5:12]
MySQL Verification Team
This has been filed internally already and devs are working on it still. Bug 26188656 - SERVER CRASHES IN MY_LOCALE_ERRMSGS::LOOKUP DUE TO INCORRECT OPTION https://bugs.mysql.com/bug.php?id=86562
[10 Oct 2017 5:26]
Simon Mudd
Thanks for clarification.
[10 Oct 2017 6:18]
Ståle Deraas
Hi Simon, Note that we removed the option "information_schema_stats" and implemented a better and more intuitive option to handle this. We have introduced "information_schema_stats_expiry", see https://dev.mysql.com/doc/refman/8.0/en/statistics-table.html. Also see slide 36-37 on https://www.slideshare.net/StleDeraas/dd-and-atomic-ddl-pl17-dublin
[10 Oct 2017 14:14]
MySQL Verification Team
The cause seems to be the explicit_defaults_for_timestamp=0 in my.cnf. I can repeat the error on 8.0.3: 2017-10-10T14:12:23.158575Z 1 [Note] InnoDB: 8.0.3 started; log sequence number 0 mysqld: Invalid default value for 'cached_time' 2017-10-10T14:12:23.457979Z 0 [ERROR] Data Dictionary initialization failed. 2017-10-10T14:12:23.458195Z 0 [ERROR] Aborting
[10 Oct 2017 17:01]
MySQL Verification Team
Starting up current debug build of 8.0 from git with --explicit-defaults-for-timestamp=0 asserts: [Note] [000000] InnoDB: Waiting for purge to start mysqld-debug: Invalid default value for 'cached_time' Assertion failed: 0, file sql_class.cc, line 2918 abort() has been called 16:55:24 UTC - mysqld got exception 0x80000003 ; mysqld-debug.exe!my_sigabrt_handler()[my_thr_init.cc:418] ucrtbased.dll!raise() ucrtbased.dll!abort() ucrtbased.dll!_get_wide_winmain_command_line() ucrtbased.dll!_get_wide_winmain_command_line() ucrtbased.dll!_get_wide_winmain_command_line() ucrtbased.dll!_wassert() mysqld-debug.exe!THD::send_statement_status()[sql_class.cc:2918] mysqld-debug.exe!Ed_connection::execute_direct()[sql_prepare.cc:3591] mysqld-debug.exe!Ed_connection::execute_direct()[sql_prepare.cc:3560] mysqld-debug.exe!execute_query()[bootstrapper.cc:77] mysqld-debug.exe!`anonymous namespace'::create_tables()[bootstrapper.cc:220] mysqld-debug.exe!dd::bootstrap::initialize_dictionary()[bootstrapper.cc:921] mysqld-debug.exe!dd::upgrade::do_pre_checks_and_initialize_dd()[upgrade.cc:1230] mysqld-debug.exe!handle_bootstrap()[bootstrap.cc:336] mysqld-debug.exe!pfs_spawn_thread()[pfs.cc:2989] mysqld-debug.exe!win_thread_start()[my_thread.cc:42] Release build refuses to start and Aborts. So something should be fixed.
[10 Oct 2017 21:25]
Simon Mudd
--explicit-defaults-for-timestamp=0 is required in my configuration because I have upstream 5.7 servers. These boxes used to run 5.6 and before that 5.1 and 5.0 and there's been no way to make a migration path on running servers without (as far as I can see) potentially triggering incompatible changes between masters and slaves. See: bug#74211 My feeling is that if I'm lucky and don't create tables with timestamps while changing these settings (on all servers in the replication chain) I may be ok but it's not clear to me. Certainly in bug#74211 I have received no suggestion on how migration may be completed on a running replication chain, and I have several I would like to change this setting on. So the configuration is there as the default is now 1 and I need to be consistent with my upstream 5.7 master which uses the value of 0. Hope this gives context to this setting.
[30 Oct 2017 17:38]
Paul DuBois
Posted by developer: Fixed in 8.0.4, 9.0.0. An in-place upgrade from MySQL 5.7 failed if the server was started with --explicit-defaults-for-timestamp=0 or a SET column had duplicated values.