MySQLの「Please DISCARD the tablespace before IMPORT」エラーについて

大した話ではないが、つまづいて大変だったのでネタとして書き込む

経緯

数週間ぶりにWordpressで調査段階の案件を走り始めた。 時間が空いた事と、調査で止まっていた事を考え、最初から構築し直した。

現象

Wordpressで初期ブログを立ち上げようとして、インストールを開始すると下記のエラーでつまづく。

Tablespace for table '`wordpress`.`wp_users`' exists. Please DISCARD the tablespace before IMPORT

開発環境を立ち上げ直しても(docker-compose build)しても、MySQLのイメージを読み直さない。 (前に1度構築したからだと思われる)

$ docker-compose build
mysql uses an image, skipping
wordpress uses an image, skipping

直接クエリを投げてテーブルを作ろうとしても同じエラーが怒るので、ユーザーの問題でもなさそう。

機械翻訳

IMPORTの前に表スペースを破棄してください

解決方法

テーブルの残骸が残っているため、それを消さないとダメらしい。
本来は、DBのデータを直接削除する(私が使ったコンテナの場合は/var/lib/mysql配下に生データがある)らしいのだが、開発環境でDockerを立ち上げ直してもダメだったので、さらに調査した。
その結果、マウントしているデータの中にMySQLのデータが入っていた。 これでは、いくら立ち上げ直しても残骸は残ったままになっている訳である。

docker-compose.yml

  mysql:
    image: mariadb
    ports:
      - 3306:3306
    volumes:
      - ./:/home
      - ./stacks/mysql/data:/var/lib/mysql

そのため、volumesに設定した、stacks/mysql/の中にあるmysqlのデータを削除すると問題なくインストールした。

©︎2017-2018 WebSandBag