1

我正在建立一个项目,我想在其中使用CakePHP 的 Translate Behavior

在我达到我希望它翻译的 10 个字段之前,一切似乎都运行良好。Translate Behavior 为它试图检索的每个字段创建一个 INNER JOIN - 我相信这是导致此错误的原因(仅在 10+ 时发生):

SQLSTATE[42000]:语法错误或访问冲突:1104 SELECT 将检查超过 MAX_JOIN_SIZE 行;检查您的 WHERE 并使用 SET SQL_BIG_SELECTS=1 或 SET MAX_JOIN_SIZE=# 如果 SELECT 没问题

两个问题:

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

2) 如果要为每个字段创建一个 INNER JOIN,那么拥有 10-20 多个翻译字段是否理想/可以/可接受?我是否应该重新考虑使用这种行为并自己创造一些东西?

4

2 回答 2

1

1:它是一个mysql安全选项,你可以覆盖什么。在应用控制器的过滤器之前使用此代码以避免此错误。

function beforeFilter() {  
$this->{$this->modelClass}->query('SET SQL_BIG_SELECTS=1'); 
...
}

2:可以多联表,但有一些建议:

于 2013-11-18T23:35:49.000 回答
1

您是否在https://stackoverflow.com/a/950576/182823SET OPTION SQL_BIG_SELECTS = 1上尝试了更多

于 2013-09-12T13:09:10.037 回答