Symfony docker容器无法连接到Mysql
我的堆栈很常见,一个用于我的Symfony应用程序的容器,另一个用于Mysql。 出于某种原因,Symfony无法连接到以下错误的Mysql容器:
致命错误:带有消息'SQLSTATE [HY000] [2002]的未捕获exception'PDOException'无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器'
一个简单的php文件来testingMySQL连接,在Symfony容器上就可以工作了
<?php $dbh = new PDO('mysql:host=database;dbname=mysite', 'mysite', 'password');
这里是我的Symfony参数文件:
database_driver: pdo_mysql database_host: database database_port: 3306 database_name: mysite database_user: mysite database_password: password
这里是我的docker-compose文件:
site: build: webapp ports : - "80:80" volumes: - /home/myuser/dev/mysite:/var/www/html/ links: - database database: image: mysql:5.5 ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=mysite - MYSQL_USER=mysite - MYSQL_PASSWORD=password
我也尝试了一个新的Symfony项目,没有错误。
删除要使用的数据库驱动程序和端口。 由于您没有使用端口转发,因此您不必为MySQL指定端口。 另外,你的驱动有一个错误,不仅仅是pdo
而是pdo_mysql
( 文档 )。
database_host: database database_name: mysite database_user: mysite database_password: password
另外,为什么你指定一个database_path
? MySQL不需要,因为你通过TCP / IP来调用它。 旧的SQLite数据库?
你也可以签出你的config.yml
文件:
# Doctrine Configuration doctrine: dbal: driver: pdo_mysql host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 # if using pdo_sqlite as your database driver: # 1. add the path in parameters.yml # eg database_path: "%kernel.root_dir%/data/data.db3" # 2. Uncomment database_path in parameters.yml.dist # 3. Uncomment next line: # path: "%database_path%" orm: auto_generate_proxy_classes: "%kernel.debug%" naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true