我正在尝试创建临时表
CREATE TEMPORARY TABLE `test_table` (
`test` DATE NOT NULL
);
即使我尝试其他模式,我也会收到以下错误
Can't create table 'db.test_table' (errno: -1)
我尝试用 google 搜索 -1 错误,但没有成功。
最佳答案
让我们总结一下:
- 确保您有权“创建临时表”
您可能需要指定要使用的确切引擎
CREATE TEMPORARY TABLE `test_table` ( `test` DATE NOT NULL ) ENGINE=MEMORY;
通过查看其配置,确保安全软件(如“apparmor”)不会对 MySQL 的行为产生影响。特别是“tmpdir”保护。
更改 apparmor 临时目录的步骤:
创建新文件夹并将所有权更改为 mysql
mkdir /mnt/foo/tmp sudo chown mysql:mysql /mnt/foo/tmp
编辑
/etc/mysql/my.cnf
让MySQL使用新的tmpdirtmpdir = /mnt/foo/tmp
编辑
/etc/apparmor.d/local/usr.sbin.mysqld
以允许读取和写入文件夹/mnt/foo/tmp/ r, /mnt/foo/tmp/** rw,
重新启动服务
sudo service apparmor reload sudo service mysql restart
关于mysql - 创建临时表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476857/