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
相关产品推荐
相关产品推荐

