[英]Symfony 4 Doctrine can't connect to Docker MySQL
即使我可以使用PMA以相同的憑據進行連接,Symfony似乎也無法連接到數據庫。
泊塢窗,compose.yml:
version: '3'
services:
apache:
build: .docker/apache
container_name: sf4_apache
ports:
- 80:80
volumes:
- .docker/config/vhosts:/etc/apache2/sites-enabled
- .:/home/wwwroot/sf4
depends_on:
- php
mysql:
image: mysql
command: "--default-authentication-plugin=mysql_native_password"
container_name: sf4_mysql
restart: always
volumes:
- ./data/db/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sf4
MYSQL_USER: sf4
MYSQL_PASSWORD: sf4
php:
build: .docker/php
container_name: sf4_php
volumes:
- .:/home/wwwroot/sf4
environment:
- maildev_host=sf4_maildev
depends_on:
- maildev
- mysql
links:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: sf4_phpmyadmin
environment:
PMA_HOST: mysql
PMA_PORT: 3306
ports:
- 8080:80
links:
- mysql
maildev:
image: djfarrelly/maildev
container_name: sf4_maildev
ports:
- 8001:80
Symfony .env:
DATABASE_URL=mysql://root:root@mysql:3306/sf4
我需要重新配置我的Doctrine文件嗎? 當前是默認值:
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
錯誤是:
驅動程序發生異常:找不到驅動程序
正如我所說,我可以使用root @ root憑據通過phpMyAdmin連接到數據庫。
在與數據庫建立連接之前,這是Connection.php文件中的變量$ this-> params:
["driver"]=>
string(9) "pdo_mysql"
["charset"]=>
string(7) "utf8mb4"
["url"]=>
string(32) "mysql://root:root@mysql:3306/sf4"
["host"]=>
string(5) "mysql"
["port"]=>
string(4) "3306"
["user"]=>
string(4) "root"
["password"]=>
string(4) "root"
["driverOptions"]=>
array(0) {
}
["serverVersion"]=>
string(6) "8.0.15"
["defaultTableOptions"]=>
array(2) {
["charset"]=>
string(7) "utf8mb4"
["collate"]=>
string(18) "utf8mb4_unicode_ci"
}
["dbname"]=>
string(3) "sf4"
嘗試這個 :
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '8.0.15'
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
mysql映像是mysql的最新版本。
php映像缺少pdo_mysql
驅動程序
應該將其添加到Dockerfile中,如下所示:
RUN docker-php-ext-install pdo pdo_mysql zip
之后,必須使用以下命令重建映像:
docker-compose build
juste用sf4_mysql替換mysql ,因為您必須在主機中應用容器名稱(container_name:sf4_mysql)==>
DATABASE_URL = mysql:// root:root @ mysql:3306 / sf4通過DATABASE_URL = mysql:// root:root @ sf4_mysql:3306 / sf4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.