如何"SET SQL_BIG_SELECTS = 1"在Laravel Join语句中 [英] How to "SET SQL_BIG_SELECTS=1" in Laravel Join statement

查看:625
本文介绍了如何"SET SQL_BIG_SELECTS = 1"在Laravel Join语句中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试执行6个联接的数据库查询时,出现以下错误消息:

when i try to execute DB query with 6 Joins i get following error message:

SQLSTATE[42000]: Syntax error or access violation: 1104 The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET MAX_JOIN_SIZE=# if the SELECT is okay

 $results = DB::table('table_1')
->join('table_2', 'table_1.id', '=', 'table_2.id')

...

我的问题是: 如何在laravel查询中设置"SET SQL_BIG_SELECTS = 1"?

推荐答案

我找到了一个解决方案:)

i found a solution :)

在app/config/database.php

in app/config/database.php

更改以下内容:

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

收件人:

'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'options'   => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET SESSION SQL_BIG_SELECTS=1',
        ),
        'strict'    => false,
    ],

我添加了选项"数组并定义了SQL_BIG_SELECTS

I added the "options" array and define SQL_BIG_SELECTS

就这样,我们可以按照需要的任何方式配置PDO!

Thats it, we can configure PDO in any way we need!

希望这对其他人有用;)

Hope this is usefull to other ;)

这篇关于如何"SET SQL_BIG_SELECTS = 1"在Laravel Join语句中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆