CentOS7でMariaDBをアップグレードするときにはmysql_upgradeが必要だった

2019年12月28日土曜日

Linux

t f B! P L
CentOS7

CentOS7で単純にyum update mariadb-server -yを実行してMariaDBを10.4にアップグレードしました。しばらくは特に問題なく動作していたのに、PHPで突然SQLSTATE[HY000][2002] No buffer space available(SQL: select *fromといったエラーが出るようになりました。そこで、/var/log/messagesを確認すると次のようなログが。

Dec 27 11:05:08 CentOS7 mysqld: 2017-12-27 11:05:08 0 [ERROR] Missing s
ystem table mysql.roles_mapping; please run mysql_upgrade to create it
Dec 27 11:05:08 CentOS7 mysqld: 2017-12-27 11:05:08 0 [ERROR] Incorrect definition of table mysql.event: expected column 'sql_mode' at position 14 to have type set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT'), found type 

ログの指示に従って、mysql_upgradeを実行してみます。

mysql_upgrade -u root -p
Enter password: 
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.servers                                      OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Upgrading from a version before MariaDB-10.1
Phase 2/7: Installing used storage engines
Checking for tables with unknown storage engine
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
information_schema
performance_schema
user1
user1.mytable                                   OK
test
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK


どうやらこれで問題が解決したようです。 MySQL Serverのリファレンスマニュアルを見ると、アップグレード時にはmysql_upgradeの実行が必要なようです。
4.4.7 mysql_upgrade — MySQL テーブルのチェックとアップグレード mysql_upgrade は、MySQL をアップグレードするたびに実行するようにしてください。

このブログを検索

QooQ