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

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

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

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

Laravel

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

2732閲覧

【MySQL】migrationファイルでテーブルを作成したがmysql上でデータが確認できない

kurasshi

総合スコア10

MySQL

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

Laravel

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/05/20 10:04

Dockerでローカル環境を構築し、laravelを用いたアプリケーションの追加機能開発をしています。

GitHubからfork、cloneして対象フォルダをローカルに持ってきた後、そのフォルダ内のenvファイルをローカル環境用のデータベースに書き換えました。

env

1DB_CONNECTION=mysql 2DB_HOST=db 3DB_PORT=3306 4DB_DATABASE='ローカル用DB名' 5DB_USERNAME=root 6DB_PASSWORD= 7

すでに完成している機能で登録・編集・削除を試したところ問題なく動いているようでした

しかしMySQLコマンドにてテーブルを確認しようとしたところ、テーブルが登録されていないようです。

mysql> use 'ローカル用DB名'; Database changed mysql> show tables; Empty set (0.01 sec)

show databases;で出てくるすべてのデータベースのテーブルを確認してみたのですがどこにも今回使用するアプリケーションのデータは入っていませんでした。

Dockerで使用するDBは違うところになっているということはあるのでしょうか?
バックエンドを始めたばかりのためよくわからず困っております。。
ヒントをいただけますと幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

Dockerコンテナ内に接続します。

terminal

1$ docker exec -it コンテナID bash

通常通りテーブルを確認してみたらありました。。。!

terminal

1# mysql -u root -p 2 3mysql> show databases; 4+--------------------+ 5| Database | 6+--------------------+ 7| information_schema | 8| 今回使用するDB名 | 9| mysql | 10| performance_schema | 11| sys | 12+--------------------+ 135 rows in set (0.02 sec) 14 15mysql> use 今回使用するDB名; 16mysql> show tables; 17+----------------------+ 18| Tables_in_今回使用するDB名 | 19+----------------------+ 20| admin_users | 21| attendance | 22| comments | 23| daily_reports | 24| migrations | 25| password_resets | 26| questions | 27| tag_categories | 28| users | 29+----------------------+ 309 rows in set (0.00 sec)

投稿2019/05/21 06:16

kurasshi

総合スコア10

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

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

0

ベストアンサー

envのhostとmysqlコマンドの接続先は同じですか?

投稿2019/05/20 10:12

hentaiman

総合スコア6389

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

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

kurasshi

2019/05/21 02:28

ご返信誠にありがとうございます。 ``` mysql> show processlist; +----+------+-----------+------+---------+------+----------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+----------+------------------+ | 4 | root | localhost | NULL | Query | 0 | starting | show processlist | +----+------+-----------+------+---------+------+----------+------------------+ 1 row in set (0.00 sec) ``` 接続先のhostを確認してみた結果、envのhostとmysqlコマンドの接続先が異なるようでした。 そこで、下記を試してみたのですが接続ができないようでした。。 ``` $ mysql -h db -u root -p -P 3306 Enter password: ERROR 2005 (HY000): Unknown MySQL server host 'db' (0) ``` そもそもの設定に不備がないか確認したところ、config/database.phpの記述がenvと揃ってなかったので、一致させました。 ``` 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'db'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'ローカル用DB名'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => false, 'engine' => null, ], ``` ですがやはりうまくいかず。。 ``` $ mysql -h db -u root -p -P 3306 Enter password: ERROR 2005 (HY000): Unknown MySQL server host 'db' (0) ``` dbに接続できないのには他に考えられる原因がありますでしょうか...?根本的なところができていない可能性もあるので色々と設定ファイルを確認しているのですが原因が特定できず。。 長文申し訳ございません。よろしくお願いいたします。
hentaiman

2019/05/21 04:26

ホスト名dbというのは合ってますか?hostsに追加してないならdbではつながりません。とりあえずはip書くかlocalhostのどっちかだと思っておけばいいです。熟達したら接続先の指定方法やmysqlの設定そのものの仕方も調べたらいいですね。 それとconfig/database.phpとenvのパラメーターは揃える必要は無いです。 この辺はlaravelの公式ドキュメント確認してみるといいでしょう。日本語だから読むのは簡単ですよ。 >根本的なところは出来てないのは間違いないんですが 普通は設定順序として、まずmysqlコマンドで接続できる状態にすること、それが出来たら接続に使用したオプションパラメーターをenvに当て込んでいくこと(直接database.phpを編集してもいいが) です。 dockerの中にあるmysqlにdockerの外からmysqlコマンドでつなげようとしているとか、予想できるパターンが少し多いのでとりあえず回答は以上です。
kurasshi

2019/05/21 06:09

ご返信ありがとうございます! おっしゃる通りで、dockerの中にあるmysqlにdockerの外からmysqlコマンドでつなげようとしていました、、 dockerの外にあるmysqlにも、私が全く同じローカル用DB名を作成していたため紛らわしくなっていました。 無事に解決いたしました!こんな初心者に丁寧に教えてくださり、本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問