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

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

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

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

Laravel

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

Q&A

解決済

1回答

22381閲覧

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

ETO3

総合スコア45

MySQL

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

Laravel

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

0グッド

0クリップ

投稿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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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としたら解決しました。 まさかこんな初歩的なところで間違えてると思わなくて複雑にしすぎました… お騒がせしました…ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問