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. 「CREATE TEMPORARY TABLES」の権限があることを確認してください
  2. 使用するエンジンを正確に指定する必要がある場合があります

    CREATE TEMPORARY TABLE `test_table` (
       `test` DATE NOT NULL
    ) ENGINE=MEMORY;
    
  3. 「apparmor」などのセキュリティ ソフトウェアが MySQL の動作に影響を与えないように、その構成を確認してください。特に「tmpdir」保護。

apparmor temp dir を変更する手順:

  1. 新しいフォルダーを作成し、所有権を mysql に変更します

    mkdir /mnt/foo/tmp 
    sudo chown mysql:mysql /mnt/foo/tmp
    
  2. /etc/mysql/my.cnfMySQL が新しい 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 に答える