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

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

新規登録して質問してみよう
ただいま回答率
86.12%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

解決済

データベースに接続できていない?SQLSTATE[HY000] [2002] No such file or directory

ETO3
ETO3

総合スコア44

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

1回答

0グッド

0クリップ

12131閲覧

投稿2021/07/05 05:51

編集2021/07/05 08:13

laravel8をdockerで構築したく作業していました。
dockerコンテナを立ち上げphp artisan migrateをしlocalhostでページを開いたら以下のエラーがでました。

SQLSTATE[HY000] [2002] No such file or directory (SQL: select exists(select * from `informations` where `number` = 000001) as `exists`)

このページの仕組みとしてはページを開くとレコードを追加する仕組みになっています。

調べてみたところ同じエラーの人は出てきたのですが多くはマイグレーションの段階で出てきたという報告が多く、今回の場合はマイグレーションは通っていたので原因が分かりません。

phpmyadminをみてもそれぞれのテーブルは存在します。

envファイルは以下のような形です。

env

1DB_CONNECTION=mysql 2DB_HOST=localhost 3DB_PORT=3306 4DB_DATABASE=database 5DB_USERNAME=root 6DB_PASSWORD=root

ご教授の程よろしくお願いします。

#追記
マイグレーションが通るのはローカルでのみみたいです。

コンテナの中でphp artisan migrate をすると

SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = database and table_name = migrations and table_type = 'BASE TABLE') at vendor/laravel/framework/src/Illuminate/Database/Connection.php:692 688▕ // If an exception occurs when attempting to run a query, we'll format the error 689▕ // message to include the bindings with SQL, which will make this exception a 690▕ // lot more helpful to the developer instead of just the database's errors. 691▕ catch (Exception $e) { ➜ 692▕ throw new QueryException( 693▕ $query, $this->prepareBindings($bindings), $e 694▕ ); 695▕ } 696▕

と似たようなエラーがでました。
コンテナからの接続先が違うのでしょうか?

#追記2
docker-compose.ymlは以下の形です。

docker

1 # db 2 db: 3 image: mariadb 4 container_name: database_mariadb 5 environment: 6 MYSQL_ROOT_PASSWORD: root 7 MYSQL_DATABASE: database 8 MYSQL_USER: root 9 MYSQL_PASSWORD: root 10 TZ: 'Asia/Tokyo' 11 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 12 volumes: 13 - ./docker/db/data:/var/lib/mysql 14 ports: 15 - 3306:3306

以下のような質問にはグッドを送りましょう

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

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

気になる質問をクリップする

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

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

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

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

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

さらっとみただけなのですが、一つ気になったのはmariadbのコンテナ名がdbなのに対してLaravelの.envのDB_HOSTがlocalhostとなっているのが気になりました。

DB_HOST=dbにするとどうなりますか?

投稿2021/07/05 12:15

編集2021/07/05 12:16
kami_tsukai

総合スコア26

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

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

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

このような回答には修正を依頼しましょう。

回答へのコメント

ETO3

2021/07/06 03:05

回答ありがとうございます。 ご指摘の通りDB_HOSTが間違っていました。 さらに言うと他の所でも設定ミスがありまして、上のエラーで検索するとソケットがどうのこうのみたいな話が出てきていたので、DB_SOCKET=/var/run/mysqld/mysqld.sock など余計な設定を色々加えていったら余計こんがらがって解決が困難になったって感じです。 なのでそういった余計な設定を消してDB_HOST=dbとしたら解決しました。 まさかこんな初歩的なところで間違えてると思わなくて複雑にしすぎました… お騒がせしました…ありがとうございます。

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

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。