【问题标题】:symfony 2.x / doctrine 2.4 app/console requires databasesymfony 2.x / 学说 2.4 应用程序/控制台需要数据库
【发布时间】:2014-10-09 09:03:11
【问题描述】:

在我的 CI 环境中,我将删除数据库并在每次新构建时重新创建它。在较旧的项目上,这很好用。在一个较新的项目中,这突然开始失败。

运行时

php app/console doctrine:database:drop --env=test --force

一切顺利。但在那之后,所有控制台命令,比如

php app/console cache:clear

开始报错

[Doctrine\DBAL\Exception\ConnectionException]
  An exception occured in driver: SQLSTATE[42000] [1049] Unknown database '(my database)'

这是我在尝试使用教义创建新数据库时遇到的错误,所以我怀疑这与 Symfony 在运行控制台时所做的引导有关。

我已经通过将 Symfony 从 2.5 降级到 2.3 来测试这个问题,强制 Symfony 和 Doctrine 到与另一个应用程序/控制台没有中断的项目中相同的版本 - 没有结果。我目前正在跟踪运行不同命令的共同点,并且怀疑 bootstrap.php 可能能够提供一些关于它可能在哪里中断的线索。

【问题讨论】:

  • 如果手动创建数据库会怎样?
  • 手动工作正常。运行命令时似乎与 Symfony 引导有关。
  • 在导入实体之前尝试php app/console doctrine:database:create
  • @Trone 删除数据库后,所有控制台命令都会中断。这与教义如何在 symfony 引导程序中引导自身有关——它试图寻找数据库,但没有找到并中断。这似乎是较新的学说版本中引入的错误。
  • @Markus 我只需要手动创建表,其余命令就可以工作了。

标签: mysql symfony doctrine-orm


【解决方案1】:
$ php app/console doctrine:database:drop --force
$ php app/console doctrine:database:create

没有办法在 Doctrine 中配置这些默认值,因为它试图在环境配置方面尽可能地不可知。解决此问题的一种方法是配置服务器级默认值。

为 MySQL 设置 UTF8 默认值就像在配置文件(通常是 my.cnf)中添加几行一样简单:

[mysqld]

collation-server = utf8_general_ci
character-set-server = utf8

来源:http://symfony.com/doc/current/book/doctrine.html

【讨论】:

  • 问题是,对于某个 symfony/doctrine 版本组合,这是行不通的。
猜你喜欢
  • 1970-01-01
  • 2012-07-27
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 2014-11-15
相关资源
最近更新 更多