【问题标题】:Using ExpressionEngine and getting this error: A Database Error Occurred, Error Number: 1117, Too many columns使用 ExpressionEngine 并收到此错误:发生数据库错误,错误号:1117,列太多
【发布时间】:2013-10-31 17:03:31
【问题描述】:

我正在 ExpressionEngine 中构建一个站点,客户希望将每个图像和文本作为可编辑字段内置到 EE 的内容管理系统中。好的……快完成了。目前有 1030 个 Channel Fields,跨越 20 个 Channel Field Groups,在 20 个 Channels 中。

在尝试添加频道字段 #1031 并继续添加频道字段时,我收到以下错误:

发生数据库错误 错误号:1117

列太多

ALTER TABLE `exp_channel_data` ADD `field_id_1036` text NULL

文件名:libraries/api/Api_channel_fields.php

行号:675

我在过去 2 周里创建了这些频道字段,我真的不想回去重新构建所有内容。所以我想知道......。

有没有办法增加列数以允许完成此站点所需的其余频道字段?或者需要做什么才能让我添加更多频道字段?

任何建议将不胜感激。谢谢你

【问题讨论】:

标签: php mysql sql database expressionengine


【解决方案1】:

您正在达到 MySQL 的限制。您可以更改列类型以更准确地反映它们包含的数据类型,例如存储日期或布尔值的列不必是占用表中不必要空间的textvarchar。还有limit 每行可以有多少数据。

  • 每个表(无论存储引擎如何)的最大行大小为 65,535 字节。存储引擎可能会对此限制施加额外的限制,从而减少有效的最大行大小。

也许是时候更好地规范化数据了。

【讨论】:

  • 我猜他正在使用 InnoDB 并根据(部分)错误消息达到 1000 列限制。
  • +1 用于规范化数据。考虑类别,考虑相关条目,考虑网格/矩阵。对于您创建的每个字段,您都在 _data 表中添加了 2 个额外的列。
猜你喜欢
  • 2014-08-10
  • 1970-01-01
  • 2011-10-26
  • 2012-10-31
  • 1970-01-01
  • 2017-01-10
  • 2018-09-18
  • 2017-06-06
相关资源
最近更新 更多