Mysql

將舊 mysql 數據庫轉儲導入 MariaDB docker 容器失敗:表“使用者”已存在

  • February 11, 2021

我正在嘗試將較舊的(〜版本 5)伺服器導入 MariaDB docker 容器。

我使用 mysqldump 命令(使用 –all-databases)創建了一個轉儲,當我嘗試導入它時,我收到以下錯誤:

ERROR 1050 (42S01) at line 2071: Table 'user' already exists

我正在嘗試使用標準命令導入一個全新的容器:

mysql -uroot -p  < [sqldump].sql

當談到 SQL 時,我是一個新手,我想知道我是否遺漏了一些明顯的東西,或者是否存在一些真正的不兼容。

我非常感謝您的建議。

謝謝!

聽起來您的轉儲腳本想要覆蓋包含使用者和權限資訊的系統“mysql”數據庫。如果這確實是您想要做的,您可以使用該選項mysqldump再次執行,然後在導入之後執行。不過我不建議這樣做,尤其是在數據庫執行不同版本的情況下。--add-drop-database``FLUSH PRIVILEGES

更好的選擇是通過將名稱傳遞給參數來明確選擇要導出的數據庫--databases,不包括“mysql”、“information_schema”和“performance_schema”等數據庫。然後,您將根據需要向新導入的數據庫授予權限。

另一個快速的選擇是在文本編輯器中編輯現有的轉儲文件,然後取出想要創建“mysql”表的部分(包括“user”和其他)。

引用自:https://serverfault.com/questions/1047479