2

我正在尝试创建一个临时表

CREATE TEMPORARY TABLE `test_table` (
  `test` DATE NOT NULL
);

即使我尝试其他模式,我也会收到以下错误

Can't create table 'db.test_table' (errno: -1)

我试图用谷歌搜索 -1 错误,但没有成功。

4

1 回答 1

2

让我们总结一下:

  1. 确保您有权“创建临时表”
  2. 您可能需要指定要使用的确切 ENGINE

    CREATE TEMPORARY TABLE `test_table` (
       `test` DATE NOT NULL
    ) ENGINE=MEMORY;
    
  3. 通过查看它的配置,确保安全软件,如“apparmor”,不会影响 MySQL 的行为。特别是“tmpdir”保护。

更改 apparmor 临时目录的步骤:

  1. 创建新文件夹并将所有权更改为 mysql

    mkdir /mnt/foo/tmp 
    sudo chown mysql:mysql /mnt/foo/tmp
    
  2. 编辑/etc/mysql/my.cnf让 MySQL 使用新的 tmpdir

    tmpdir = /mnt/foo/tmp
    
  3. 编辑/etc/apparmor.d/local/usr.sbin.mysqld以允许读取和写入文件夹

    /mnt/foo/tmp/ r,
    /mnt/foo/tmp/** rw,
    
  4. 重启服务

    sudo service apparmor reload
    sudo service mysql restart
    
于 2014-10-21T00:30:48.653 回答