MySQL 8.0.11 報錯[ERROR] [MY-011087] Different lower_case_table_names settings for server ('1')


  • --報錯信息:
  • 2018-06-07T19:52:26.943083+08:00 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.11) starting as process 37992
  • 100 200
  • 100 200
  • 2018-06-07T19:52:31.581790+08:00 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('1').
  • 2018-06-07T19:52:31.582111+08:00 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
  • 2018-06-07T19:52:31.582140+08:00 0 [ERROR] [MY-010119] [Server] Aborting
  • 2018-06-07T19:52:33.348638+08:00 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.11) MySQL Community Server - GPL.
  •  
  • --背景知識:
  • MySQL8.0 新增了data dictionary的概念,數據初始化的時候在linux下默認使用lower-case-table-names=0的參數,數據庫啟動的時候讀取的my.cnf文件中的值。若二者值不一致則在mysql的錯誤日志中記錄報錯信息。
  •  
  • 在MySQL 5.7之前則允許數據庫初始化和啟動的值不一致且以啟動值為准。
  • 在MySQL 官方提供的RPM包中默認是使用lower- case-table-names=0,不太適合生產環境部署。在生產環境建議使用官方的二進制包。
  • --官方解釋:
  • After initialization, is is not allowed to change this setting.So "lower_case_table_names" needs to be set together with --initialize .
  • --解決辦法:
  • 在mysql數據庫初始化的時候指定不區分大小寫,在數據庫實例啟動的時候也要指定不區分大小寫。即數據庫初始化時lower_case_table_names的值和數據庫啟動時的值需要一樣。
  • 在實際開發生產的應用中多是不區分大小寫的即lower- case-table-names=1。
  • --操作步驟:
  • /usr/local/mysql/bin/mysqld --user=mysql --lower- case-table-names=1 --initialize-insecure --basedir=/usr/local/mysql --datadir=/data/mysql/node1
  • my.cnf
  • [mysqld]
  • lower_case_table_names = 1
  •  
  • 若初始化和啟動值不一樣則會在錯誤日志中有如下提示:
  • [ERROR] [MY- 011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
  • [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('1').
  • --參考資料:
  • https://bugs.mysql.com/bug.php?id=90695

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM