Xibo从2.3.16升级至3.0.0/3.3.3时出现数据库pid字段错误求助
Xibo 升级后
pid 字段无默认值错误的解决方法 问题原因
Xibo 3.x 版本的数据库结构与 2.3.x 存在差异,升级过程中可能因迁移脚本执行不完整、字段默认值未正确设置,触发 MySQL 严格模式下的非空字段校验错误。
解决步骤
定位问题表
先找出包含pid字段的表,执行以下SQL查询:SELECT table_name FROM information_schema.columns WHERE column_name = 'pid';也可以查看CMS完整日志,找到报错对应的SQL语句,直接定位目标表。
添加字段默认值
针对查询到的表,为pid字段设置默认值(根据Xibo业务逻辑,通常设为0即可):ALTER TABLE 替换为实际表名 MODIFY COLUMN pid INT(11) NOT NULL DEFAULT 0;确保迁移脚本完整执行
如果是Docker部署,进入CMS容器重新执行迁移:docker exec -it xibo-cms-web-1 bash php artisan migrate非Docker部署,直接在CMS根目录下运行:
php artisan migrate调整MySQL SQL模式(可选)
若上述操作无效,可临时关闭MySQL的严格校验模式:
编辑MySQL配置文件(my.cnf/my.ini),修改sql_mode配置,移除STRICT_TRANS_TABLES,重启MySQL服务;或临时会话中执行:SET sql_mode = 'ONLY_FULL_GROUP_BY,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';注意:优先修复字段默认值,修改SQL模式为备选方案。
内容的提问来源于stack exchange,提问作者Wh1te Wolf
相关产品推荐
相关产品推荐

