gpt4 book ai didi

php - 没有创建数据库的 Symfony 2.7 应用程序

转载 作者:行者123 更新时间:2023-11-29 02:49:59 25 4
gpt4 key购买 nike

我的 Symfony2 应用程序使用 Doctrine 和 PDO_mysql 时遇到一些非常奇怪的行为:

从存储库克隆它之后,我需要通过 composer 安装它,而无需创建数据库。我想稍后使用 app/console doctrine:database:create 命令创建数据库,并在安装期间在 parameters.yml 中指定参数。

但是当我运行 composer install 时,我在 composer post-install-cmd "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::清除缓存”:

[PDOException] SQLSTATE[42000] [1049] Unknown database 'test'

首先我认为这是 this issue 的副本.但是在 app/config/config.yml 的 doctrine 连接配置中指定 server_version 没有帮助。此外,我发现的其他解决方案建议恢复到 doctrine/dbal 的早期版本,例如 2.4.4 或 2.4.3。我尝试了 doctrine/dbaldoctrine/ormdoctrine/doctrine-bundle 版本的任意组合,但行为没有改变。

之后,我注意到运行抛出此错误的命令会反复运行。例如。当我第一次在新安装的副本上运行 app/console doctrine:database:create 时(我暂时删除了那些抛出上述错误的安装后脚本),它抛出了这个错误。当我立即再次运行它时,它成功创建了它:

Created database `test` for connection named default

完全不相关的控制台命令也会发生这种情况。当我第一次运行 app/console 向我显示可用命令时,我得到了unknown database 'test'。当我立即再次运行它时,一切正常,之后它甚至允许我使用 database:create 命令创建数据库。

对我来说,这看起来需要在安装后首先进行初始化,以便pdo_mysql 连接 正常工作。但它是什么?我正在使用类似于 Symfony Standard Editioncomposer.json 设置.但无论我尝试什么,结果都是一样的……2 天后,我现在真的很绝望。

注意 1:如果我在 parameters.yml 中指定数据库名称之前手动创建数据库,一切都会按预期进行。但这对我来说不是一个选择。在创建数据库之前,我需要能够使用所有 post-install-cmds 运行 composer install

注意 2:我在本地主机 Linux 机器上尝试所有这些,手动安装了 MySQL,同时在 Windows 机器上使用 MariaDB 的 xampp 堆栈。两者的行为相同......

最佳答案

我用 verbose 调用了一些有问题的命令,我想出了一个异常跟踪,其中包含:

Doctrine\DBAL\Schema\AbstractSchemaManager->tablesExist() 
at vendor/lexik/translation-bundle/Lexik/Bundle/TranslationBundle/Storage/DoctrineORMStorage.php:28

Lexik\Bundle\TranslationBundle\Storage\DoctrineORMStorage->translationsTablesExist()
at vendor/lexik/translation-bundle/Lexik/Bundle/TranslationBundle/EventDispatcher/GetDatabaseResourcesListener.php:41

所以我检查了 LexikTranslationBundle 并找到了 this issue ,由 this commit 修复。对我来说不幸的是,该修复程序仅合并到版本 4 中,它需要 Symfony 2.8。我也提议合并到其他版本中,但与此同时我最终 fork 了 bundle 并自己修复了它。现在一切都按预期工作。

关于php - 没有创建数据库的 Symfony 2.7 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com