質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.23%

Rails on DockerでMysql2::Error: Tablespace is missingになって何も表示されなくなりました

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,509

YOJI4910

score 7

前提・実現したいこと

Docker for MacとRails5で開発を行っているのですが開発環境・本番環境のMySQLでエラーが出てしまい。アプリが表示されなくなりました。 デバッグにお力をおかしください。

発生している問題・エラーメッセージ

db:reset後にdb:migrateしようとしてエラー

$ docker-compose run web rails db:migrate
Starting weinance_db_1     ... done
Starting weinance_chrome_1 ... done
rails aborted!
ActiveRecord::StatementInvalid: Mysql2::Error: Tablespace is missing for table `app_name_development`.`schema_migrations`.: SHOW FULL FIELDS FROM `schema_migrations`
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `_query'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `block in query'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `handle_interrupt'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `query'
/usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:187:in `block (2 levels) in execute'
/usr/local/bundle/gems/activesupport-5ndex.rb:92:in `register'
                     〜 (文字数制限のため中略) 〜
/usr/local/bundle/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
bin/rails:4:in `<main>'

Caused by:
Mysql2::Error: Tablespace is missing for table `app_name_development`.`schema_migrations`.
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `_query'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `block in query'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `handle_interrupt'
/usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `query'
/usr/local/bundle/gems/activerecord-`block in require'
                     〜 (文字数制限のため中略) 〜
/usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Rootページ(localhost:3000)にアクセスしてエラー(エラー画面になって表示されない)

$docker-compose logs
=>
web_1     | Started GET "/" for 172.19.0.1 at 2019-09-27 16:17:10 +0000
web_1     | Cannot render console from 172.19.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
web_1     |    (9.7ms)  SET NAMES utf8,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
web_1     |   ↳ /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
web_1     |    (4.0ms)  SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
web_1     |   ↳ /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
web_1     |   
web_1     | ActiveRecord::StatementInvalid (Mysql2::Error: Tablespace is missing for table `app_name_development`.`schema_migrations`.: SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC):
web_1     |   
web_1     | mysql2 (0.5.2) lib/mysql2/client.rb:131:in `_query'
web_1     | mysql2 (0.5.2) lib/mysql2/client.rb:131:in `block in query'
web_1     | mysql2 (0.5.2) lib/mysql2/client.rb:130:in `handle_interrupt'
web_1     | mysql2 (0.5.2) lib/mysql2/client.rb:130:in `query'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:187:in `block (2 levels) in execute'
web_1     | activesupport (5.2.3) lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
web_1     | activesupport (5.2.3) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
web_1     | activesupport (5.2.3) lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:186:in `block in execute'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log'
web_1     | /usr/local/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log'
web_1     | activesupport (5.2.3) lib/active_support/notifications/instrumenter.rb:23:in `instrument'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:185:in `execute'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/mysql/database_statements.rb:28:in `execute'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:196:in `execute_and_free'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/mysql/database_statements.rb:33:in `exec_query'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract/database_statements.rb:478:in `select'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract/database_statements.rb:70:in `select_all'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract/query_cache.rb:104:in `block in select_all'
web_1     | activerecord (5.2.3) lib/active_record/connection_adapters/abstract/query_cache.rb:127:in `block in cache_sql'
web_1     | /usr/local/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
                     〜 (文字数制限のため中略) 〜
web_1     | activesupport (5.2.3) lib/active_support/tagged_logging.rb:28:in `tagged'
web_1     | activesupport (5.2.3) lib/active_support/tagged_logging.rb:71:in `tagged'
web_1     | railties (5.2.3) lib/rails/rack/logger.rb:26:in `call'
web_1     | sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call'
web_1     | actionpack (5.2.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
web_1     | actionpack (5.2.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'
web_1     | rack (2.0.7) lib/rack/method_override.rb:22:in `call'
web_1     | rack (2.0.7) lib/rack/runtime.rb:22:in `call'
web_1     | activesupport (5.2.3) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
web_1     | actionpack (5.2.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
web_1     | actionpack (5.2.3) lib/action_dispatch/middleware/static.rb:127:in `call'
web_1     | rack (2.0.7) lib/rack/sendfile.rb:111:in `call'
web_1     | railties (5.2.3) lib/rails/engine.rb:524:in `call'
web_1     | puma (3.12.1) lib/puma/configuration.rb:227:in `call'
web_1     | puma (3.12.1) lib/puma/server.rb:660:in `handle_request'
web_1     | puma (3.12.1) lib/puma/server.rb:474:in `process_client'
web_1     | puma (3.12.1) lib/puma/server.rb:334:in `block in run'
web_1     | puma (3.12.1) lib/puma/thread_pool.rb:135:in `block in spawn_thread'

該当のソースコード

なにがトリガーになってこんな状態になったかわからないため、関係がありそうなdocker-compose.ymlを示します。

version: '3'
services:
  # mysqlのコンテナ
  db: 
    # dbのイメージ指定。ない場合はpullする
    image: mysql:5.7
    # ローカル./mysqlとコンテナ/var/lib/mysqlを同期
    volumes:
      - ./mysql:/var/lib/mysql
    # 環境変数を追加(MySQLのパスワードを設定)
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"

  # Railsのコンテナ. コンテナの名前?
  # コンテナ名なのでなんでもいい
  web:
    # Dockerfileがあるディレクトリ
    build: .
    # buildした時に実行するコマンド
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    # ホスト上のディレクトリをコンテナにマウント
    volumes:
      - .:/app_name   
    # ポートをバインドします.ポート番号を指定. [ホスト:コンテナ]で設定
    ports:
      - "3000:3000" 
    # webはdbに依存。 起動順がdb→chrome→webになる。
    depends_on:
      - db
      - chrome

  # Headless chrome用
  chrome:
    image: selenium/standalone-chrome
    ports:
      - "4444:4444"

試したこと

  • DBのリセット
  • コンテナの再build
  • migrate(はエラーになります)

正直いろいろ対処しているうちに悪化してしまいました。

補足情報(FW/ツールのバージョンなど)

  • ruby 2.6.3
  • Rails 5.2.3
  • mysql2 0.5.2
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

解決しました!
アドバイスいただいたことを参考に、一度、docker-compose downでコンテナを削除して、db:create -> db:migrate -> db:seedで復活しました。
ありがとうございました!

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

rails が migrationの管理に使っているtableが壊れているようです。
db:resetではなく、 db:drop、db:create からやりなおしてみたらどうでしょう

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/10/01 16:57

    ご教示ありがとうございます。
    db:dropを行ってみたところ同じようなエラーがでてしまいました。
    ```sh
    $ docker-compose run web rake db:drop
    =>
    Starting weinance_chrome_1 ... done
    Starting weinance_db_1 ... done
    rake aborted!
    ActiveRecord::StatementInvalid: Mysql2::Error: Tablespace is missing for table `app_name_development`.`schema_migrations`.: SHOW FULL FIELDS FROM `schema_migrations`
    /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `_query'
    /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `block in query'
    /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `handle_interrupt'
    〜 (中略) 〜
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:466:in `load_schema!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:459:in `block in load_schema'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:456:in `load_schema'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:336:in `columns_hash'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1072:in `arel_column'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1165:in `block in preprocess_order_args'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1161:in `map!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1161:in `preprocess_order_args'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:300:in `order!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:12:in `order'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/schema_migration.rb:48:in `all_versions'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/migration.rb:1059:in `get_all_versions'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/migration.rb:1066:in `current_version'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/migration.rb:1131:in `last_stored_environment'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:58:in `check_protected_environments!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/railties/databases.rake:13:in `block (2 levels) in <main>'
    /usr/local/bundle/gems/rake-12.3.3/exe/rake:27:in `<top (required)>'

    Caused by:
    Mysql2::Error: Tablespace is missing for table `app_name_development`.`schema_migrations`.
    /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `_query'
    /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:131:in `block in query'
    /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `handle_interrupt'
    /usr/local/bundle/gems/mysql2-0.5.2/lib/mysql2/client.rb:130:in `query'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:187:in `block (2 levels) in execute'
    /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
    /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
    /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:186:in `block in execute'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log'
    /usr/local/bundle/gems/activesupport-5.2.3/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:185:in `execute'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql/database_statements.rb:28:in `execute'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:196:in `execute_and_free'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:793:in `column_definitions'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/schema_statements.rb:113:in `columns'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/schema_cache.rb:69:in `columns'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/schema_cache.rb:75:in `columns_hash'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:466:in `load_schema!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/attributes.rb:234:in `load_schema!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/attribute_decorators.rb:51:in `load_schema!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:459:in `block in load_schema'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:456:in `load_schema'
    〜 (中略) 〜
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/tasks/database_tasks.rb:58:in `check_protected_environments!'
    /usr/local/bundle/gems/activerecord-5.2.3/lib/active_record/railties/databases.rake:13:in `block (2 levels) in <main>'
    /usr/local/bundle/gems/rake-12.3.3/exe/rake:27:in `<top (required)>'
    Tasks: TOP => db:drop => db:check_protected_environments
    (See full trace by running task with --trace)
    ```
    また、db:creatも試しましたが、すでにdbはあると言われました、
    ```sh
    $ docker-compose run web rake db:create
    =>
    Starting weinance_chrome_1 ... done
    Starting weinance_db_1 ... done
    Database 'app_name_development' already exists
    Database 'app_name_test' already exists
    ```
    以前、解決の糸口が見えず困っております、引き続きご助力をお願い致します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る