mysql - 创建临时表时出错

标签 mysql temp-tables create-table derived-table

我正在尝试创建临时表

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

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

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

我尝试用 google 搜索 -1 错误,但没有成功。

最佳答案

让我们总结一下:

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

    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
    

关于mysql - 创建临时表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26476857/

相关文章:

mysql - 如何检查 GROUP 生成的记录集中是否存在非字符串值?

temp-tables - 进行中 4gl 获取临时表的字段名称

sql - 从 Informix 存储过程返回的数据源

sql - 为临时表创建 To 脚本

sql - MYSQL Create table + Alter table 语法错误?

php - 使用 ASIFormDataRequest 进行简单的 mysql 查询

php - 如何通过将最后一行值和插入值相加来将值插入到sql数据库中

PHP MySQL : decrypt a column value from a MySQL row that was encrypted upon insertion and parse to JSON

Mysql 表不反射(reflect)新的更改

mysql - 如何管理 MySQL 中的表所有权