我在 Ubuntu 20.04 上,尝试从 MySQL 迁移到 MariaDB 10.5。我已经正确安装了 mariadb,并且尝试使用 在新的 mariadb 中导入我的所有数据库的转储mysql -u root -p < all_dbs.sql
,但它只输出:
错误 1005(HY000)位于第 87 行:无法创建表
mysql.db
(errno:168“引擎出现未知(一般)错误”)`
我对数据库管理还很陌生,我希望得到一些关于如何解决这个问题的详细说明。
我的脚步
1.) 首先,我将所有数据库转储到一个 .sql 文件中mysqldump -u root -p --all-databases > all_dbs.sql
2.) 然后,我从 ubuntu 中删除了 mysql 服务器sudo apt purge mysql-server
3.) 从这里,我安装了 mariadb:
sudo apt update && sudo apt upgrade
sudo apt -y install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main'
sudo apt update
sudo apt install mariadb-server mariadb-client
# 我愚蠢地回答“不”,因为它告诉我这样做是安全的……
4.) 我尝试使用导入我的 dbdumpfile.sql mysql -u root -p < all_dbs.sql
,但遇到了这个错误'ERROR 1698 (28000): Access denied for user 'root'@'localhost'
,所以我使用了这些说明解决这个问题
5.) 当然,这又导致了一个新问题:Unknown collation: 'utf8mb4_0900_ai_ci' #1902
,我用sed -i all_dbs.sql -e 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g'
6 解决了这个问题。)现在,当我运行 时mysql -u root -p < all_dbs.sql
,它会输出
错误 1005 (HY000) 第 87 行:无法创建表
mysql
。db
(错误号:168“引擎出现未知(一般)错误”)
有小费吗?最初在这里问(没有收到详细答复..)
答案1
请不要尝试导入这些数据库 :mysql
,,information_schema
。performance_schema
答案2
我认为最好只逐个恢复所需的数据库,避免使用 MySQL 本机数据库。
您可以使用以下 shell 脚本快速转换 DB 以避免排序错误。
#!/bin/sh
echo "Converting database..."
fileName=$1
sed -i 's/utf8mb4_0900_ai_ci/utf8_general_ci/g' $fileName
sed -i 's/CHARSET=utf8mb4/CHARSET=utf8/g' $fileName
您可以运行 ./replace.sh dbname.sql