首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用带有10+字段的TranslateBehavior (导致10+内部联接)返回SQL错误

使用带有10+字段的TranslateBehavior (导致10+内部联接)返回SQL错误
EN

Stack Overflow用户
提问于 2013-09-11 21:04:19
回答 2查看 105关注 0票数 1

我正在建立一个项目,我想在其中利用CakePHP的翻译行为

一切似乎都很好,直到我到达了我想要它翻译的10个字段。翻译行为为它试图检索的每个字段创建了一个内部连接--我认为这是导致此错误的原因(仅在10+中发生):

SQLSTATE42000:语法错误或访问冲突: 1104选择将检查比MAX_JOIN_SIZE行更多的内容;如果选择正常,请检查您的位置,并使用SET SQL_BIG_SELECTS=1或SET MAX_JOIN_SIZE=#

两个问题:

1)我尝试通过运行两个列出的SQL命令来修复它,但仍然没有成功--我如何才能让它工作呢?

2)如果要为每个字段创建一个内部连接,那么有10-20+的翻译字段是否是理想的/ok/可接受的?我应该重新考虑使用这种行为,或者自己创造一些东西吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-12 13:09:10

Stack Overflow用户

发布于 2013-11-18 23:35:49

1:它是mysql安全选项,您可以重写它。在应用程序控制器中使用前筛选器中的代码以避免此错误。

代码语言:javascript
运行
复制
function beforeFilter() {  
$this->{$this->modelClass}->query('SET SQL_BIG_SELECTS=1'); 
...
}

他说:把桌子连在一起是可以的,但也有一些建议:

  • 总是使用索引!如果没有表单元格索引,查询可能会很慢。
  • 如果您有很多可翻译的数据数据,在很多表中使用分离的表来进行转换,就像您有内容和帖子时使用Content_I18n和Post_I18n http://book.cakephp.org/2.0/en/core-libraries/behaviors/translate.html ->多重翻译模型一样。
  • 您可以重写行为。我正在使用SmoothTranslate Behavior l3ppard/2010/01/05/smoothtranslate-to-make-smooth-translations我认为最好的方法是使用转换行为或者扩展它,不要写自己的,它在CakePhp中已经足够好了。蛋糕3会更好。(我希望)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18751254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档