You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2.4项目无法升级数据库,如何跳过RDBMS版本不兼容错误?

解决Magento 2.4数据库版本检查报错的临时方法

首先得明确:官方强烈不推荐绕过这个检查——MariaDB 10.1已经停止维护,存在安全漏洞和兼容性隐患。如果条件允许,优先把你的MariaDB升级到10.2-10.4版本才是长期可靠的解决方案。但如果确实需要临时绕过这个报错,以下是几种可行的方法:

方法1:修改核心验证文件(应急临时方案,不推荐长期用)

Magento的数据库版本检查逻辑在vendor/magento/framework/DB/Adapter/Pdo/Mysql.php文件里:

  1. 打开这个文件,找到checkDatabaseVersion方法
  2. 定位到版本验证的代码块,类似这样:
    $supportedVersions = [
        'MySQL-8' => '/^8\./',
        'MySQL-5.7' => '/^5\.7\./',
        'MariaDB-(10.2-10.4)' => '/^10\.[2-4]\./',
    ];
    
  3. 修改MariaDB的正则表达式,把10.1版本包含进去:
    'MariaDB-(10.1-10.4)' => '/^10\.[1-4]\./',
    
  4. 保存文件后,重新运行数据库升级命令:bin/magento setup:upgrade

⚠️ 注意:修改核心文件会在你执行composer update时被覆盖,所以这只是救急方案,后续一定要升级数据库或者用更持久的方法替代。

方法2:用Composer补丁实现持久化修改

为了避免直接改核心文件被覆盖,可以用Composer补丁来保存修改:

  1. 在项目根目录创建patches文件夹,新建一个补丁文件,比如magento-framework-db-version.patch
  2. 补丁文件内容参考如下(注意替换xxx为实际的代码行号,你可以用diff命令生成准确的补丁内容):
    --- vendor/magento/framework/DB/Adapter/Pdo/Mysql.php
    +++ vendor/magento/framework/DB/Adapter/Pdo/Mysql.php
    @@ -xxx,7 +xxx,7 @@
         protected function checkDatabaseVersion()
         {
             $supportedVersions = [
    -            'MariaDB-(10.2-10.4)' => '/^10\.[2-4]\./',
    +            'MariaDB-(10.1-10.4)' => '/^10\.[1-4]\./',
                 'MySQL-8' => '/^8\./',
                 'MySQL-5.7' => '/^5\.7\./',
             ];
    
  3. 在composer.json的extra部分添加补丁配置:
    "extra": {
        "magento-force": "override",
        "patches": {
            "magento/framework": {
                "Allow MariaDB 10.1 for database upgrade": "patches/magento-framework-db-version.patch"
            }
        }
    }
    
  4. 运行composer install或composer update应用补丁,之后再执行bin/magento setup:upgrade

方法3:伪造数据库版本返回值(隐蔽的临时方法)

如果你不想修改版本验证的正则,也可以让Magento获取到的数据库版本是一个官方支持的版本:

  1. 打开vendor/magento/framework/DB/Adapter/Pdo/Mysql.php,找到getVersion方法
  2. 修改它的返回值:
    public function getVersion()
    {
        // 替换成一个官方支持的版本号
        return '10.2.30';
        // 原代码:return $this->_connection->getAttribute(\PDO::ATTR_SERVER_VERSION);
    }
    
  3. 保存后运行升级命令,完成后记得改回原代码(或者用补丁来管理这个修改)

再次强调:以上方法都是临时绕过检查的权宜之计,长期来看必须升级你的MariaDB到官方支持的版本,否则会面临安全风险和潜在的兼容性问题。

内容的提问来源于stack exchange,提问作者user14606073

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:52:59