web-dev-qa-db-ja.com

MYSQL TABLESPACE = innodb_file_per_table GIVING ERROR 1030(HY000):Goet error 168 from storage engine

このステートメントを試して、テーブルを別のディスクに配置しました。オペレーティングシステムはLinux Oracle 7で、ディレクトリのアクセス許可をchmod -vR 777、ディスクディレクトリへの完全なアクセス権。 mysqlページから直接取得した次のステートメントを実行した後、このエラーが発生し続ける

CREATE TABLE t2 (c1 INT PRIMARY KEY) TABLESPACE = innodb_file_per_table 
     DATA DIRECTORY = '/home/egonzalez/Documentos';

エラー1030​​(HY000):ストレージエンジンからエラー168を取得しました

私の知る限り、mysqlがディレクトリにアクセスできないというアクセス許可の問題がありますが、ディレクトリのアクセス許可を変更した後、続行方法がわかりません。

1
Eduardo

そのデータディレクトリに.ibdファイルを含むテーブルを作成する場合は、次のようにします。

chown -R mysql:mysql /home/egonzalez/Documentos

次に、これを実行します

CREATE TABLE t2 (c1 INT PRIMARY KEY)
ENGINE=InnoDB DATA DIRECTORY = '/home/egonzalez/Documentos';

MySQL 5.7では、オプション innodb_file_per_table がデフォルトで有効になっています

そもそもエラーの理由は?

このように CREATE TABLESPACE を実行する必要があります

mysql> CREATE TABLESPACE `ts1` 
    ->     ADD DATAFILE '/home/egonzalez/Documentos/mytblspc.ibd' 
    ->     ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)

次に、任意のテーブルを作成して、1つのテーブルスペースに含めることができます。

CREATE TABLE t2 (c1 INT PRIMARY KEY) ENGINE=InnoDB TABLESPACE ts1;
1
RolandoMySQLDBA