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

Symfony执行make:migration报错:找不到check_constraints表

解决Symfony make:migration报错(SQLSTATE[42S02]: 未知表check_constraints)

问题原因

check_constraints是MySQL 8.0及以上版本information_schema才包含的系统表,若你使用MySQL 5.7或更低版本,Doctrine的数据库驱动默认会尝试查询该表,从而触发报错。

解决方案

  • 升级MySQL版本至8.0+
    直接将数据库升级到MySQL 8.0或更高版本,information_schema会自动包含check_constraints表,适配Doctrine的查询逻辑。

  • 修改Doctrine配置,禁用检查约束查询
    编辑项目根目录下的config/packages/doctrine.yaml,针对默认数据库连接添加适配配置:

    doctrine:
        dbal:
            connections:
                default:
                    # 保留原有配置(如url、server_version等)
                    options:
                        platform:
                            skip_check_constraints: true
    

    若使用的是较低版本的Doctrine DBAL,可指定对应MySQL版本的平台类:

    doctrine:
        dbal:
            connections:
                default:
                    server_version: '5.7' # 替换为你的实际MySQL版本
                    platform_service: Doctrine\DBAL\Platforms\MySQL57Platform
    

    配置完成后清除缓存并重新执行迁移:

    symfony console cache:clear
    symfony console make:migration
    
  • 匹配Doctrine DBAL与MySQL版本兼容性
    确保Doctrine DBAL版本和你的MySQL版本兼容,比如MySQL 5.7建议使用DBAL 2.x或适配的3.x版本。可在composer.json中指定版本后执行更新:

    composer update doctrine/dbal
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:02:11