これは、ログファイルにまったく同じエラーを示したテーブルがあったときに、fedoraのmariadb 10.2.16で行ったこととまったく同じです...
2018-07-11 9:43:58 140323764213504 [Note] InnoDB: The file './database_name/innodb_table.ibd' already exists though the corresponding table did not exist in the InnoDB data dictionary. You can resolve the problem by removing the file.
2018-07-11 9:44:29 140323764213504 [Warning] InnoDB: Tablespace 'database_name/innodb_table' exists in the cache with id 2836 != 2918
あなたの走行距離とエラーは異なる場合がありますが、私が想定する主なものは
...already exists though the corresponding table did not exist in the InnoDB data dictionary...
テーブルの削除とテーブルの変更が機能しない...
MariaDB [database_name]> drop table innodb_table;
ERROR 1051 (42S02): Unknown table 'database_name.innodb_table'
MariaDB [database_name]> alter table innodb_table discard tablespace;
ERROR 1146 (42S02): Table 'database_name.innodb_table' doesn't exist
create table も次のように失敗します。
MariaDB [database_name]> create table innodb_table(`id` int(10) unsigned NOT NULL);
ERROR 1813 (HY000): Tablespace for table '`database_name`.`innodb_table`' exists. Please DISCARD the tablespace before IMPORT
これを修正するために、私が最初にしたことは
create table innodb_table2(`id` int(10) unsigned NOT NULL);
Query OK, 0 rows affected (0.07 sec)
次に、/var/lib/mysql/database_name ディレクトリで、root として次のことを行い、innodb_table.ibd の上書きを確認して問題を引き起こしました
cp -a innodb_table2.frm innodb_table.frm
cp -a innodb_table2.ibd innodb_table.ibd
systemctl restart mariadb
次に、mysqlコンソールに戻り、両方のテーブルでドロップコマンドを正常に発行しました
MariaDB [database_name]> drop table innodb_table;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 8
Current database: database_name
Query OK, 0 rows affected (0.08 sec)
MariaDB [database_name]> drop table innodb_table2;
Query OK, 0 rows affected (0.25 sec)
すべてが正方形になり、1 つのテーブルを再作成できます...
MariaDB [database_name]> create table innodb_table (`id` int(10) unsigned NOT NULL);
Query OK, 0 rows affected (0.08 sec)
編集:追加するつもりでした
restorecon -Rv /var/lib/mysql/database_name
データベースのコピー後にコマンドを実行して、すべての selinux コンテキストを本来あるべき方法で取得します。これは、データベースからそれらをほぼすぐに削除する場合でも、代わりに --archive または -a オプションを 2 つの cp に追加することもできます。コマンドなので、実際にはアーカイブオプションはこれを短縮します:
cp innodb_table2.frm innodb_table.frm
cp innodb_table2.ibd innodb_table.ibd
chown mysql:mysql innodb_table.frm innodb_table.ibd
chmod 660 innodb_table.frm innodb_table.ibd
restorecon -Rv /var/lib/mysql/database_name
systemctl restart mariadb
私がより良いと思う次のものだけに、すでに作成されたテーブルに設定されているselinuxコンテキストを保持します。
cp -a innodb_table2.frm innodb_table.frm
cp -a innodb_table2.ibd innodb_table.ibd
systemctl restart mariadb
上記のコマンドの長いリストを、* でさらに短縮できる短いリストに置き換えました。