【发布时间】: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