MySQL Error number: MY-013628; Symbol: ER_IB_ERR_TEMP_TABLESPACE_DIR_DOESNT_EXIST; SQLSTATE: HY000 报错 故障修复 远程处理
文档解释
Error number: MY-013628; Symbol: ER_IB_ERR_TEMP_TABLESPACE_DIR_DOESNT_EXIST; SQLSTATE: HY000
Message: %s
错误说明:
MySQL Error MY-013628 (HY000) 表示临时表空间目录不存在。这是一个关联性错误,由MySQL服务器引起,当显式指定一个临时表空间时,服务器尝试在指定目录(比如 UnpackTmp)中创建子目录而失败,可能是因为指定的路径不存在或不能写入,或是指定的路径是一个文件系统框架文件(比如 .apfs),而不是文件夹。
常见案例
此错误最常见是在尝试创建在MySQL中显式指定的表空间,比如 UnpackTmp,时引发。这可能是因为用户在MySQL配置中指定了不存在的文件夹,或者用户定义的字符串错误,而MySQL无法分辩是文件还是文件夹。要解决此问题,用户需要在MySQL配置中正确设置表空间文件夹,或者改变访问权限,使MySQL服务器能够创建文件夹。
解决方法:
要解决此错误,用户可以分两步来解决:
1.正确设置表空间文件夹。找出MySQL配置文件,比如 my.cnf,确保在[mysqld]节点中已经定义了innodb_temp_tablespaces以及temp_tablespaces_dir选项,并检查其值就可以了。
2.改变访问权限,使MySQL服务器能够创建文件夹。确保MySQL运行用户“mysql”(或者配置文件中定义的运行用户)有足够的权限可以创建文件夹,并且确保此文件夹不是一个文件系统框架文件,而是一个普通的文件夹。因此,为了解决此问题,可以尝试在指定的文件夹中创建一个子文件夹。SQL语句如下:
mkdir /MySQL Temp
(其中是指定的表空间文件夹)
如果上述两步均已尝试,但MySQL仍然不能写入临时表空间文件夹,则可以考虑在MySQL配置文件中将temp_space_dir参数设置为临时表空间文件最上层文件夹,而不是子文件夹。在大多数情况下,这应该可以解决此问题。