Php Docker:SQLSTATE[HY000][2002]没有这样的文件或目录
嘿,伙计们,我正在尝试连接Php Docker:SQLSTATE[HY000][2002]没有这样的文件或目录,php,mysql,docker,yii2,mariadb,Php,Mysql,Docker,Yii2,Mariadb,嘿,伙计们,我正在尝试连接Yii2和mysql上运行的mariadb 我用的是docker我有这些容器 mariadb和php-fpm我可以使用这个命令mysql-u root-p在mariadb容器内连接到mysql,没有问题。 同样使用mysql工作台我也可以通过隧道连接到mysql,也没有问题 但是当我运行这个站点时,例如mysite.com/user/login,当我登录时,我得到了这个错误 SQLSTATE[HY000][2002]没有这样的文件或目录 原因:PDO异常 这是docke
Yii2
和mysql
上运行的mariadb
我用的是docker我有这些容器
mariadb
和php-fpm
我可以使用这个命令mysql-u root-p
在mariadb
容器内连接到mysql,没有问题。
同样使用mysql工作台
我也可以通过隧道连接到mysql,也没有问题
但是当我运行这个站点时,例如mysite.com/user/login,当我登录时,我得到了这个错误
SQLSTATE[HY000][2002]没有这样的文件或目录
原因:PDO异常
这是docker compose文件中的我的mariadb
config
mariadb:
image: bitnami/mariadb:latest
container_name: mariadb
working_dir: /bitnami/mariadb
volumes:
- ./data/mariadb:/bitnami/mariadb
environment:
- MARIADB_ROOT_PASSWORD=rootpass
- MARIADB_DATABASE=mydb
- MARIADB_USER=david
- MARIADB_PASSWORD=pass
ports:
- "8890:3306"
在我的main.php
config中Yii2
我把它作为我的dsn
mysql:host=ipvalueofmysite.com;端口=8890;dbname=mydb
在我的例子中,我找到了解决方案
基本上,在docker中,
db
服务名称成为数据库的主机名,我需要将localhost
交换到db
,错误就消失了。奇怪,我知道。:) 你试过使用localhost吗?没有,因为我认为它不起作用,因为我是在不在本地的服务器上这样做的。所以你从本地环境连接远程mysql?或者你的代码和mysql都是远程工作的?是的,所有东西都是远程的,那么你可以使用localhost,因为它们在同一台服务器上