MySQL 运行 SQL 脚本错误 - [WinError 32] 该进程无法访问该文件,因为它正被另一个进程使用:

Posted

技术标签:

【中文标题】MySQL 运行 SQL 脚本错误 - [WinError 32] 该进程无法访问该文件,因为它正被另一个进程使用:【英文标题】:MySQL Running SQL Script error - [WinError 32] The process cannot access the file because it is being used by another process: 【发布时间】:2021-04-30 15:41:29 【问题描述】:

我在运行 SQL 脚本加载数据时遇到错误。错误贴在下面:

Preparing...
[WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\PRATIK~1\\AppData\\Local\\Temp\\tmpf75l0wi5.cnf'

我曾多次尝试卸载和安装 mysql,但没有任何帮助。

【问题讨论】:

脚本有什么作用? tmpf75l0wi5.cnf 来自哪里? (听起来不像是 MySQL 文件。)是什么调用了脚本? 【参考方案1】:

我在尝试运行 MySQL 脚本时遇到了同样的问题。我试图在临时文件夹中找到该进程并将其删除并再次尝试,但该进程似乎再次开始并出现在临时文件夹中。我无法运行该脚本,但是,我找到了一种解决方法,而不是运行该脚本,而是尝试打开它并在查询编辑器中运行它。

【讨论】:

它不工作我尝试运行脚本,但它只是创建没有值的空字段。【参考方案2】:

听起来您之前已经尝试过执行该脚本并在不停止 mysqld 进程的情况下停止了它。所以这个过程(实际导入)仍然对临时配置文件持有文件锁。

尝试删除该文件并检查所有您不想要的 MySQL 进程是否已停止。然后再试一次。

【讨论】:

【参考方案3】:

只需降级您的 MySQL 工作台版本。 就我而言,我将版本从 8.0.25 到 8.0.20。

【讨论】:

我仍然想知道您正在运行哪些脚本来获取该消息,以及它是否是确定性的报告。 这是一个来自员工数据库的简单 sql 脚本链接:employees.sql 文中的zip不再是a,所以我可以重现导入错误 所以你的文件中的问题是工作台中不允许源,所以自动安装不再可能,手动安装所有文件 谢谢,降级解决了。【参考方案4】:

看来实际问题与 MySQL 本身无关,而与 MySQL Workbench 相关。

您看到的错误是来自 Windows 本身的一般错误,而不是来自 MySQL。不清楚您是如何运行 MySQL 的,例如它是在本地主机中、在 Docker 环境中还是在远程服务器中。

似乎很明显,至少有两个进程正试图获得该临时文件的排他锁。我的猜测是 MySQL 不会将临时文件写入我们看到的用户文件夹(使用您的用户名 Pratik)。

在 Windows 上,MySQL 按顺序检查 TMPDIR、TEMP 和 TMP 环境变量的值。对于找到的第一个设置,MySQL 使用它并且不检查剩余的那些。如果没有设置 TMPDIR、TEMP 或 TMP,则 MySQL 使用 Windows 系统默认值,通常为 C:\windows\temp。

您可以做的就是更改您的 MySQL 配置,使其使用您将设置的特定临时路径,重新启动 MySQL 并重试运行查询。如果您看到错误包含您已隔离问题的新临时路径,则确实是 MySQL 问题。如果您一直看到此路径,则您已将问题隔离到 MySQL WorkBench。

另一种方法是从另一个 MySQL 客户端运行相同的查询,例如命令行客户端 mysql;看看你是否遇到同样的错误。

可能更简单的方法是使用另一个 MySQL 客户端 dBeaver 尝试查询,并使用它来将问题隔离到 MySQL 服务器本身或 MySQL WorkBench。

【讨论】:

【参考方案5】:

这是 MySQL 升级版本的常见问题,尝试使用 Open Script 而不是 Run Script 似乎可以解决问题。

【讨论】:

以上是关于MySQL 运行 SQL 脚本错误 - [WinError 32] 该进程无法访问该文件,因为它正被另一个进程使用:的主要内容,如果未能解决你的问题,请参考以下文章

进入mysql控制台后执行sql脚本的方法

在 bash ubuntu 上运行 WINE

如何使用WINE运行

我有一堆sql文件需要运行 如何批量运行

SQL 脚本在 MySQL 中有效,但 mysqli->query() 失败;为啥?

mysql 运行 sql 脚本