php - mysql 61表连接限制

标签 php mysql yii

先行者:也许我的数据库设计很糟糕。

我有一个系统,我在其中记录了有关元素的一些设置信息。然后其他用户可以向这些元素添加详细信息。我事先不知道这些细节的名称是什么,也不知道会有多少。因此,我将它们存储在 element_detail 表中。在某些情况下,我需要将这些行显示为列,即在导出数据时,用户可以指定他们想要将哪些详细信息作为输出的一部分。为此,我使用以下类型的查询:

select ed1.item_value as 'detail_1_name',ed2.item_value as 'detail_2_name' from element e 
left join element_detail ed1 on ed1.element_id=e.element_id and ed1.item_key='detail_1_name'
left join element_detail ed2 on ed2.element_id=e.element_id and ed2.item_key='detail_2_name' 

在我开始查看单个数据集中的 61 多个细节之前,这一直很有效。此时我得到:CDbCommand 无法执行 SQL 语句:SQLSTATE[HY000]: 一般错误:1116 表太多; MySQL 一次连接只能使用 61 个表

我怎样才能改变我的设计,这样我就不会得到这个,最好是不必进行 61 个单独的查询并自己构建数据集。我使用 PHP/Yii 作为开发环境。

最佳答案

61 table 达到上限,引用https://dev.mysql.com/doc/refman/5.0/en/joins-limits.html

您可以创建一个大(临时)表并通过多个查询对其进行更新。最后你可以从中阅读。确保列名不要太长,因为也有限制。

关于php - mysql 61表连接限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29116500/

相关文章:

php - Yii 基本读写文件助手

php - 我们如何在 Android 和 iPhone 的移动应用程序中对用户进行身份验证?

php - 如何使用外键将值保存到数据库

javascript - 从数据库获取用户并附加到元素

php - 向MySQL表插入大量数据只插入1行?

MySQL - 索引在登台服务器上工作,但在生产服务器上不起作用

php - yii 中的标准条件

php - 升级流程繁重的 PHP 和 MySQL 应用程序的语言建议

mysql - 对多个表使用 SUM 会产生意想不到的结果

mysql - SQL 返回父表中的所有行,其中条件与子表的另一个子表匹配