我mysql数据库每次执行别人给我的sql脚本文件的时候总是运行一步遇到一对错误执行不下去了

说实话,第一次遇到SQL脚本错误时,我很困惑。
汉字非常烦人。
我的一位客户在使用 MySQL 时遇到了问题,因为他使用的是记事本中保存的 GBK 编码文件。
经过一番努力,终于发现需要使用Notepad++将编码改为UTF-8 简而言之,在保存文件之前快速查看一下代码可以省去很多麻烦。

我在表创建顺序中也遇到了陷阱。
我记得有一次为一家公司做数据迁移。
该脚本首先创建表,然后删除它,然后重建它。
结果中间出现了错误,整个数据库瘫痪了。
后来我先重建了表,然后删除了旧的表,问题就解决了。
特别是,如果表之间存在关系,例如外键依赖关系,则确实需要颠倒顺序。

执行策略特别有趣。
我曾经有一个项目。
第一次运行时脚本报错,但在不同时间再次运行时成功。
后来查看日志发现这是服务器负载过大导致的。
所以有时候问题并不是出在脚本上,而是可能当时数据库正忙。
不过,我遇到了你提到的“多按几次”的情况,但没有深究原因。
可能是一些临时阻塞没有被正确移除。

我还遇到了数据库状态问题。
有一天,半夜运行一个脚本时,突然死机了。
原来是主从同步延迟,主库被锁。
后来为了避开高峰时间,改为清晨演出。
所以在开始执行之前,我习惯使用SHOW GLOBAL STATUS来检查数据库的状态,并确保Key_buffer_size参数足够。

对于语法错误,我有一个小技巧。
如果遇到错误,可以直接从错误消息中复制SQL片段并在MySQL Workbench中单独运行,以立即检测问题。
例如,“字段列表”中未知的列“xxx””让您立即了解到列名拼写错误。
我现在也向初学者推荐这个方法。
这比使用脚本搜索要省力得多。

但最好保持脚本干净。
我习惯将表创建和数据插入分开发布,并在中间添加注释来解释依赖关系。
团队合作时,有人不小心改变了顺序。
由于录音清晰,一切都在几分钟内安装完毕。
所以,现在写脚本的时候,我特别强调:不要只图快,要把可读性放在第一位。

Navicat for MySQL 转储SQL文件数据丢失

这是一个陷阱,不要相信。

将此段落直接复制到记事本中并另存为 .bat 文件。

操作前请确保路径和密码正确。