延安市网站建设_网站建设公司_博客网站_seo优化
2025/12/26 18:10:35 网站建设 项目流程

好,直接给你工程师级、可落地、不翻车的导入方法。导入比导出更容易出事故,我会把该注意的坑一起讲清楚。


一、最标准、最可靠的导入方式

1️⃣ 先创建数据库(如果还没有)

mysql -u root -p -e "CREATE DATABASE db_name DEFAULT CHARSET utf8mb4;"

不要指望 sql 里一定有 CREATE DATABASE,这是很多人翻车点。


2️⃣ 导入 SQL 文件

mysql -u root -p db_name < db.sql

如果是压缩文件:

gunzip < db.sql.gz | mysql -u root -p db_name

二、生产环境 / 大库导入必加配置(非常重要)

🚀 防止导入慢 / 卡死

mysql -u root -p \--max_allowed_packet=1G \--default-character-set=utf8mb4 \db_name < db.sql

三、常见错误 & 对策(实话)

❌ 1. ERROR 1049: Unknown database

👉 你没建库
✔️ 先 CREATE DATABASE


❌ 2. ERROR 1007: Can't create database; database exists

👉 SQL 里有 CREATE DATABASE
✔️ 删除该语句,或:

mysql -u root -p < db.sql

(不指定 db,让 SQL 自己建)


❌ 3. 字符集乱码(中文变问号)

👉 99% 是字符集不一致
✔️ 导入时明确指定:

mysql --default-character-set=utf8mb4 -u root -p db_name < db.sql

❌ 4. ERROR 1418 / 1227(存储过程 / 权限)

👉 权限不足
✔️ 两种选择:

方式 A(推荐):用 root 导
方式 B:跳过 DEFINER

sed -i '' 's/DEFINER=`[^`]*`@`[^`]*`/DEFINER=CURRENT_USER/g' db.sql

(mac 适用)


❌ 5. GTID 报错(云数据库常见)

ERROR 1840: GTID_PURGED can only be set when GTID_EXECUTED is empty

✔️ 解决方式:

SET GLOBAL gtid_purged='';

或在导出阶段就关掉(你之前如果照我说的做,一般不会踩)


四、Docker / 云 MySQL 导入

Docker 容器

docker exec -i mysql \mysql -u root -p db_name < db.sql

压缩版:

gunzip < db.sql.gz | docker exec -i mysql mysql -u root -p db_name

五、导入完成后必须做的 3 个检查

1️⃣ 表是否完整

SHOW TABLES;

2️⃣ 行数是否正常

SELECT COUNT(*) FROM some_table;

3️⃣ 字符集是否一致

SHOW CREATE TABLE some_table;

看是否是 utf8mb4


六、一句实话(重点)

  • 导入是“破坏性操作”

  • 在生产环境:

    • 永远先导入到新库
    • 永远不要覆盖原库
    • 永远不要用 GUI 点导入

你现在这个导入是:

  • 本地?
  • 服务器?
  • Docker?
  • RDS / 云数据库?
  • 数据量多大?

给我这几个信息,我可以直接给你一条定制级、可复制粘贴的导入命令,保证不踩雷。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询