command: [
...,
'--init_connect="SET NAMES utf8mb4"',
'--init_connect="SET collation_connection = utf8mb4_unicode_ci"'
]
然後 docker-compose up 的過程是沒什麼問題,當用 phpmyadmin 登入時就會看到頁面直接出現跟本篇標題差不多的文字,然後資料庫選單沒出現,重整網頁後也只是跳回登入,再次登比也是一樣。
這時我就直接進入 mysql container 內,直接用指令的方式登入
mysql -u {username} -p
剛登入是沒什麼異狀,但要求展示資料庫列表( show databases; )時就出現跟 phpmyadmin 登入時看到的異常訊息是一樣的( 註: 如果直接以高權限的帳戶登入,像 root 反而一切都很正常,沒有異常訊息 )
因為訊息中有提到 "init_connect command failed",所以先把 init_connect 的資料列出來看看
SHOW VARIABLES LIKE '%init_connect';
其結果為
| Variable_name | Value |
|-------------------------------------|
| init_connect | 'SET NAMES utf8mb4' |
因為我有其他的 mysql 也有用到同樣的 init_connect 的命令,但是該命令是寫在 mysql.cnf 中,不是跟本次發生狀況的 mysql 一樣是用 docker 帶參數命令去生成的,所以我進到正常的 mysql 中看了一下,發現列出來的 init_connect 的值是不該帶有單引號的。
所以,我將 docker-compose.yml 中的 mysql 的 command 中有關於 init_connect 的命令改寫成
command: [
...,
'--init_connect=SET NAMES utf8mb4;SET collation_connection = utf8mb4_unicode_ci'
]
沒有留言:
張貼留言