php - 将symfony 2.8升级到5.0或更高版本以使mysql 8兼容

标签 php mysql symfony

我有一个用Symfony 2.3完成的项目..网站。它使用MySQL,并且由于MySQL升级到8,它给我HTTP状态500错误,因为方言显然有所改变。

由于MySQL 8是相当新的,我猜测我必须升级该学说以使其与MySQL 8兼容。但这也意味着我必须升级Symfony。欢迎来到依赖地狱。

下一个问题是,我只有PHP 7.4可用。

该项目由
-包含7个控制器,固定装置,6个实体,事件监听器,数据转换器和翻译以及18个树枝模板的主捆绑包。
-包含基本布局和css / js文件的主题包
-扩展FOSUserBundle的用户捆绑包

我已经阅读了有关升级主要版本的文档。

我不知道最好的道路是什么。

a)升级到3.0,然后是4.0,然后是5.0

b)将捆绑软件复制到使用cli创建的新创建的v5.0项目中,并进行调整。

C) ?

我期望不高,但是也许有人处于同样的悲惨境地,并有一些技巧。

这是composer.json

{
    "name": "symfony/framework-standard-edition",
    "license": "MIT",
    "type": "project",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    },
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.8.*",
        "doctrine/orm": "2.5.*",
        "doctrine/doctrine-bundle": "1.3.*",
        "twig/extensions": "1.0.*",
        "symfony/assetic-bundle": "2.3.*",
        "symfony/swiftmailer-bundle": "2.3.*",
        "symfony/monolog-bundle": "2.3.*",
        "sensio/distribution-bundle": "2.3.*",
        "sensio/framework-extra-bundle": "2.3.*",
        "sensio/generator-bundle": "2.3.*",
        "incenteev/composer-parameter-handler": "~2.0",
        "jms/security-extra-bundle": "dev-master",
        "stof/doctrine-extensions-bundle": "~1.1@dev",
        "friendsofsymfony/user-bundle": "dev-master#e770bfa2fd0fc665f55cd7cfeb34bddeffb892f4",
        "doctrine/doctrine-fixtures-bundle": "dev-master",
        "salavert/time-ago-in-words": "1.*"
    },
    "scripts": {
        "post-install-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "minimum-stability": "stable",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "incenteev-parameters": {
            "file": "app/config/parameters.yml"
        },
        "branch-alias": {
            "dev-master": "2.3-dev"
        }
    }
}


是否可以将理论切换到与MySQL 8兼容的DBAL,而无需升级Symfony?

最佳答案

我最近将其中一个项目从Symfony 3移到了4,也建议您将项目移至Symfony 4.4.3,因为它是最新的长期支持版本,比任何其他当前版本都要多。

您可以按照一些步骤来平稳地处理项目,首先,我建议您删除当前版本中的所有贬值,然后使用所需的Symfony版本和其他所需的依赖关系创建一个新的空项目,完成后将作曲家从新项目更新为旧版本并运行composer更新。由于缺少文件,方法,不同的名称空间和其他类似的东西,这将导致安装中断,修复这些问题并在git上提交更改。

提交对git的更改将使您可以轻松地在需要时回滚,因此您应该在进行少量更改后提交。

注意:-另外,我建议您按照上述步骤将2升级到3,并重复3到4。

关于php - 将symfony 2.8升级到5.0或更高版本以使mysql 8兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59978827/

相关文章:

javascript - JS运行后获取源码

javascript - jquery通过php echo实现多个id选择器

php - 即使检测是否存在,也会插入多个数据库?

symfony - 在 symfony 3.4 上安装 FOSUserBundle 时出错

mysql - symfony2 和 doctrine mysql 唯一约束错误信息

php - MYSQL表规划

php联系表格干净的代码

mysql - 如何将openstreetmap数据放入我的mysql数据库中?

javascript - 在 Node 中处理大量数据的最快方法

php - Symfony2 - 找不到 "GET/"的路由