版本:10.0.33-MariaDB
正在尝试执行ALTER TABLE,并且在重建期间磁盘空间不足,目前正在使用@@ tmpdir中的/ tmp。我正在尝试将NULL的@@ innodb_tmpdir设置为另一个目录,并且它不断失败并显示以下错误:
MariaDB [(none)]> set @@innodb_tmpdir = '/tmp/inno_tmpdir';
ERROR 1231 (42000): Variable 'innodb_tmpdir' can't be set to the value of '/tmp/inno_tmpdir'
MariaDB [(none)]> show warnings\G
*************************** 1. row ***************************
Level: Warning
Code: 1210
Message: InnoDB: Server doesn't have permission in the given location.
*************************** 2. row ***************************
Level: Error
Code: 1231
Message: Variable 'innodb_tmpdir' can't be set to the value of '/tmp/inno_tmpdir'
2 rows in set (0.00 sec)
我已授予目录对mysql的完全权限。
[root@host tmp]# ls -lrt | grep inno_tmpdir
drwxrwxrwx. 2 mysql mysql 4096 Oct 16 12:15 inno_tmpdir
奇怪的是,我可以设置@@ innodb_tmpdir / tmp(将@@ tmpdir设置为)/ usr / tmp或/ var / tmp
MariaDB [(none)]> set @@innodb_tmpdir = '/var/tmp';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set @@innodb_tmpdir = '/usr/tmp';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> set @@innodb_tmpdir = '/tmp';
Query OK, 0 rows affected (0.00 sec)
答案 0 :(得分:0)
innodb_tmpdir被视为启动时的启动,与其他启动(例如innodb_data_home_dir,innodb_undo_directory等)不同。
要在其他目录中搜索表空间,必须将它们(我相信在Linux中用逗号分隔)添加到innodb_directories。
答案 1 :(得分:0)
我有一个类似的问题,但是使用MySQL 5.6.49。 我所做的-它只是向新的temp目录添加了完全权限:
chmod 777 /tmp/inno_tmpdir
然后我就可以设置innodb_tmpdir ='/ tmp / inno_tmpdir'