在帝国CMS中建立模型字段时,如果字段过多或单个字段过长,可能会遇到 MySQL 报错 “Row size too large”。这个错误是因为 MySQL 表的最大行大小限制为 65535 字节(不包括 BLOB 和 TEXT 类型字段)。解决这个问题的方法是将一些字段转换为 TEXT 或 BLOB 类型。
解决方案
-
分析现有字段:
- 首先查看现有的字段,确定哪些字段可以转换为 TEXT 或 BLOB 类型。
-
修改字段类型:
- 将一些较大的字段或者不经常查询的字段类型改为 TEXT 或 BLOB。
-
执行 SQL 语句:
- 使用 SQL 语句来修改字段类型。
具体步骤
-
找出问题字段:
- 使用 PHPMyAdmin 或其他数据库管理工具打开出现问题的表,检查每个字段的类型和长度。
-
修改字段类型:
- 对于那些可以接受 TEXT 或 BLOB 类型的字段,修改其类型。
ALTER TABLE `***_ecms_infoclass_article` MODIFY COLUMN `zz_ceshi` TEXT NOT NULL, MODIFY COLUMN `z_ceshi` TEXT NOT NULL, MODIFY COLUMN `qz_ceshi` TEXT NOT NULL, MODIFY COLUMN `save_ceshi` TEXT NOT NULL;
注意:如果字段内容不需要存储大量数据,可以考虑只修改部分字段为 TEXT 类型。
-
执行 SQL 语句:
- 在数据库管理工具中执行上述 SQL 语句。
-
测试:
- 修改后,尝试再次添加字段或保存数据,检查是否还出现同样的错误。