workbench 批量导入sql文报错的几点记录

本文详细记录了在使用mysql.exe导入SQL文件时遇到的三种常见错误及其解决方案,包括'NO_AUTO_CREATE_USER'设置问题、函数声明问题以及本地主机名引用问题。通过修改SQL文件中的特定设置和语法,成功解决了导入过程中的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导入:
11:47:11 Restoring D:\project\XXXXXXXX.sql
Running: mysql.exe --defaults-file="c:\users\sam\appdata\local\temp\tmpt6aeix.cnf"  --protocol=tcp --host=192.168.9.28 --user=root --port=3306 --default-character-set=utf8 --comments  < "D:\\project\\天天SRM\\trunk\\04代码管理\\01后台服务端\\tterp\\db\\20190817\\Dump20190817.sql"
ERROR 1231 (42000) at line 2116: Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

Operation failed with exitcode 1
11:47:42 Import of D:\project\XXXXXXXX.sql has finished with 1 errors

解决方案:'NO_AUTO_CREATE_USER' 替换为空


11:48:35 Restoring D:\project\XXXXXXXXsql
Running: mysql.exe --defaults-file="c:\users\sam\appdata\local\temp\tmprhklvr.cnf"  --protocol=tcp --host=192.168.9.28 --user=root --port=3306 --default-character-set=utf8 --comments  < "D:\\project\\XXXXXXXX.sql"
ERROR 1418 (HY000) at line 2118: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
Operation failed with exitcode 1
11:49:08 Import of D:\project\XXXXXXXX.sql has finished with 1 errors
解决方案:'locahost' 替换为ip地址

11:43:04 Restoring D:\project\XXXXXXXX.sql
Running: mysql.exe --defaults-file="c:\users\sam\appdata\local\temp\tmprj9etu.cnf"  --protocol=tcp --host=192.168.9.28 --user=root --port=3306 --default-character-set=utf8 --comments  < "D:\\project\\XXXXXXXX.sql"
ERROR 1418 (HY000) at line 5593: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

Operation failed with exitcode 1
12:00:08 Import of D:\XXXXXXXX.sql has finished with 1 errors

解决方案:function begin  前添加    DETERMINISTIC

### MySQL Workbench 导入 SQL 报错 解决方案 在使用 MySQL Workbench 导入 SQL 件时,可能会遇到多种错误。以下是针对 `MySQL server has gone away` 错误以及其他可能问题的综合解决方案。 #### 一、`MySQL server has gone away` 的原因及解决方法 该错误通常发生在尝试导入较大的 SQL 件时。其主要原因是 MySQL 客户端与服务器之间的连接超时或数据包大小超出限制[^1]。 - **调整 max_allowed_packet 参数** 需要在 MySQL 的配置件 (`my.ini`) 中增加允许的最大数据包大小。具体操作如下: ```ini [mysqld] max_allowed_packet=512M [client] max_allowed_packet=512M ``` 修改完成后重启 MySQL 服务以使更改生效[^3]。 - **设置 wait_timeout 和 interactive_timeout** 如果长时间未向 MySQL 发送查询请求,则可能导致连接断开。可以通过以下命令临时延长超时时间: ```sql SET GLOBAL wait_timeout=28800; SET GLOBAL interactive_timeout=28800; ``` 这里将超时时间设为 8 小时 (单位秒)[^1]。 #### 二、字符集冲突问题 如果 SQL 件中的字符编码与目标数据库不一致,也可能引发错误。例如,在导入过程中可能出现乱码或其他异常情况[^2]。 - **确认源件和目标库的字符集一致性** 使用以下语句检查当前数据库的字符集设置: ```sql SHOW VARIABLES LIKE 'character_set%'; ``` - **指定正确的字符集** 在执行导入前,可以显式声明使用的字符集。例如: ```sql SET NAMES utf8mb4; SOURCE /path/to/your/file.sql; ``` #### 三、外键约束问题 在外键定义阶段出现问题也是常见的原因之一。比如父表不存在或者字段类型不匹配等都会阻止成功创建关系。 - **禁用外键检查** 可通过关闭外键检测来绕过这一环节直到整个脚本加载完成后再重新启用它: ```sql SET foreign_key_checks = 0; -- 执行导入逻辑 SET foreign_key_checks = 1; ``` #### 四、利用 Table Data Import Wizard 工具 对于某些特定情况下手动编写复杂迁移脚本较为困难的情形下,可考虑采用图形界面工具辅助完成任务。例如 MySQL Workbench 提供了一个名为 “Table Data Import Wizard” 功能可以帮助简化流程[^4]: 1. 创建对应结构的目标表; 2. 启动向导并通过 GUI 界面选择本地磁盘上的 `.sql` 或其他支持格式的数据源路径; 3. 跟随提示逐步填写必要参数直至结束即可自动处理剩余工作。 --- ### 总结 上述提到的方法涵盖了从基础网络通信层面到高级功能应用等多个角度应对不同类型的挑战提供了切实可行的技术手段。实际操作当中可以根据具体情况灵活选用适合自己的方式解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值