Sam*_*zar 6 php doctrine symfony symfony-flex symfony4
我正在使用 symfony 4 并且在运行准则控制台命令时出现此错误:
In AbstractMySQLDriver.php line 108:
An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory
Run Code Online (Sandbox Code Playgroud)
我认为这是因为连接有问题,但是当我运行应用程序时,它可以毫无错误地访问数据库,所以我无法想象连接有什么问题。
我能够通过手动创建数据库并使用
php bin/console doctrine:schema:create --dump-sql
Run Code Online (Sandbox Code Playgroud)
但这确实是不需要的,因为稍后需要更新架构时,所有数据都会丢失,因为我需要重新创建架构而不是更新它。
该应用程序在手动执行 SQL 后正常工作(easyadmin 工作正常)。
这是我的配置:
.ENV:
DATABASE_URL=mysql://root:root@127.0.0.1:3306/test
Run Code Online (Sandbox Code Playgroud)
学说.yaml:
parameters:
env(DATABASE_URL): ''
doctrine:
dbal:
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
Run Code Online (Sandbox Code Playgroud)
我试过 drop 命令只是为了测试,它抛出了这个:
In DropDatabaseDoctrineCommand.php line 93:
Connection does not contain a 'path' or 'dbname' parameter and cannot be dropped.
Run Code Online (Sandbox Code Playgroud)
所以我将 dbname 添加到 Doctic.yaml 并没有奏效。我还尝试删除缓存、创建新项目、使用远程 mysql 和使用 sqlite,但两种情况下的错误都是相同的!!
在此先感谢您的帮助 !
所以我想你展示了你的doctrine.yml的全部内容。
如果是这样,您可能需要考虑更改您的doctrine.yml,如下所示:在 dbal: 部分添加额外的行
doctrine:
dbal:
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
url: '%env(resolve:DATABASE_URL)%'
Run Code Online (Sandbox Code Playgroud)
仔细观察以 url: 开头的最后一行。
“resolve:”运算符在环境变量中查找 DATABASE_URL,如果找到,则会用其内容替换表达式。
这是一个由 symfony 自动生成的doctrine.yml。
但可能不需要“解决”运算符。这也可能有效:
doctrine:
dbal:
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
url: '%env(DATABASE_URL)%'
Run Code Online (Sandbox Code Playgroud)
这种方法是在symfony 文档中提出的,阅读该文档可能会很有趣,可以了解 symfony 的进一步配置。
| 归档时间: |
|
| 查看次数: |
15095 次 |
| 最近记录: |