MySQL 中的列太多 - 错误 1117

pin*_*rio 6 mysql

我刚刚在 mysql 的表中添加了一个新字段,它返回警告“1117:列太多”

该表有(喘气) 1449 列。我知道,我知道这是一个荒谬的列数,我们正在重构架构,但我需要更多地扩展这个架构。也就是说,根据 mysql 文档,这似乎没有达到 3398 的理论限制。我们也没有接近每行 64K 的限制,因为我们现在在 50K 范围内。

该警告不会阻止我向架构添加字段,因此不确定它是如何失败的。鉴于它似乎没有引起任何问题,我该如何解释这个错误?

pax*_*blo 1

如果正如你所说,这一个警告,那么你应该记住,警告就是这样:警告。这意味着您现在没问题,但是,如果您继续引发警告的行为,您可能会受到某种形式的惩罚。

但是,这更有可能是一个错误,因为它实际上拒绝让您添加更多列。即使它确实允许您添加更多列,但这也不太可能持续很长时间。

因此,无论它是警告还是错误,正确的反应是倾听它告诉您的内容并修复它。

如果您在考虑正确修复问题的最佳方法时需要快速修复,则可以使用公共标识符将行拆分到两个表中。

这将使您的查询变得相当难看,但至少允许您向“表”添加更多列(引用是因为它实际上是具有公共键的两个表)。

不要将此作为最终解决方案,尤其是因为它违反了规范化规则。但是,说实话,有一千多个列,它们很可能已经损坏了:-)

我发现很难想象一个具有数千个属性的项目无法组织成更好的层次结构。