【问题标题】:Laravel is not connecting to MySQL from Docker container but PDO isLaravel 没有从 Docker 容器连接到 MySQL,但 PDO 是
【发布时间】:2020-06-18 19:23:07
【问题描述】:

我有一个运行 Laravel 7.0 和 MariaDB 10.3.23 项目的 docker 容器,它触发了异常:

Illuminate\Database\QueryException
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from `table` where `id` = 1)

每当我尝试运行任何 Eloquent 代码时!

但奇怪的是,如果在任何控制器内我运行任何 SQL:

$config = config('database.connections.mysql'); // I used like so to ensure it's taken from configs!
try {
    $dbh = new \PDO('mysql:host=' . $config['host'] . ';dbname=' . $config['database'], $config['username'], $config['password']);
    foreach ($dbh->query('SELECT * from table LIMIT 10') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (\PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

它打印出正确的输出!

以防万一,我的 .env 文件应该是正确的,因为它适用于 PDO:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3036
DB_DATABASE=app
DB_USERNAME=app
DB_PASSWORD=secret

我已经清理了所有配置:

docker exec -it php-app php artisan optimize:clear

没有错误!

我认为我遗漏了一些明显的东西,否则就是一个奇怪的错误!

提前致谢!

【问题讨论】:

  • 去掉端口,或者放入正确的3306端口,而不是3036。
  • 是的。我犯了那个错误。谢谢!

标签: php laravel docker mariadb database-connection


【解决方案1】:

正如@aynber 在 cmets 中所观察到的。我在港口打错字了。

【讨论】:

    猜你喜欢
    • 2019-10-12
    • 2020-03-01
    • 2019-08-04
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多