teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

解決したのでまとめます

2019/01/08 12:01

投稿

set0gut1
set0gut1

スコア2413

answer CHANGED
@@ -16,4 +16,14 @@
16
16
  $exception->getMessage()
17
17
  ));
18
18
  }
19
- ```
19
+ ```
20
+
21
+ ------
22
+
23
+ まとめ
24
+
25
+ - mysqlは正常に起動してて、mysqlコマンドで接続可能
26
+ - $dsnの値は`"mysql:host=localhost;dbname=mydata"`
27
+ - 接続先を`127.0.0.1`に変更すると問題を回避できた
28
+
29
+ 接続先が`localhost`のときはどこかにある`php.ini`に設定されている`pdo_mysql.default_socket`の値を用いてunix socket接続を行うらしく、この設定値が実環境と異なっていたものと考えられます。

2

微修正

2019/01/08 12:01

投稿

set0gut1
set0gut1

スコア2413

answer CHANGED
@@ -1,4 +1,4 @@
1
- mysqlが起動してないと思われます。
1
+ ~~mysqlが起動してないと思われます。~~
2
2
 
3
3
  -----
4
4
 

1

追記: $dsn確認用のコード改変です。

2019/01/08 11:33

投稿

set0gut1
set0gut1

スコア2413

answer CHANGED
@@ -1,1 +1,19 @@
1
- mysqlが起動してないと思われます。
1
+ mysqlが起動してないと思われます。
2
+
3
+ -----
4
+
5
+ 追記: $dsn確認用のコード改変です。
6
+ エラー発生箇所である vendor/robmorgan/phinx/src/Phinx/Db/Adapter/MysqlAdapter.php の 121行目付近を次のように編集するとエラーメッセージに$dsnの内容が出力されるようになるので、そのエラーメッセージを教えてください。
7
+ vendor以下のファイルは通常編集しないので、あとで忘れずに元に戻しておいてください。
8
+
9
+ ```
10
+ try {
11
+ $db = new \PDO($dsn, $options['user'], $options['pass'], $driverOptions);
12
+ } catch (\PDOException $exception) {
13
+ throw new \InvalidArgumentException(sprintf(
14
+ '($dsn = "%s") There was a problem connecting to the database: %s', // ここと
15
+ $dsn, // ここを変えます
16
+ $exception->getMessage()
17
+ ));
18
+ }
19
+ ```