Laravel: Error de sintaxis o infracción de acceso: Error 1055

Resuelto Karthikvijayaveni asked hace 54 años • 15 respuestas

Quiero usar WhereIn y Groupby en la misma consulta para obtener el resultado.

He probado esto:

$loadids=explode("#@*",$reciptdet->loading_id);
$loadingdatas=DB::table('loading')->groupBy('vehicle_no')->whereIn('id',$loadids)->get();

Pero recibí este mensaje de error:

SQLSTATE[42000]: Error de sintaxis o infracción de acceso: 1055 'sbrtpt.loading.id' no está en GRUPO POR (SQL: seleccione * de carga donde id en (14, 15, 16) grupo por vehículo_no)

Karthikvijayaveni avatar Jan 01 '70 08:01 Karthikvijayaveni
Aceptado

Respuesta corta

En config\database.php--> "mysql"matriz

Establecer 'strict' => falsepara desactivar todo.

.... o

Puede salir 'strict' => truey agregar modos a "mysql"la opción en

'mysql' => [
       ...
       ....
       'strict' => true,
       'modes' => [
            //'ONLY_FULL_GROUP_BY', // Disable this to allow grouping by one column
            'STRICT_TRANS_TABLES',
            'NO_ZERO_IN_DATE',
            'NO_ZERO_DATE',
            'ERROR_FOR_DIVISION_BY_ZERO',
            'NO_AUTO_CREATE_USER',
            'NO_ENGINE_SUBSTITUTION'
        ],
 ]

Respuesta detallada

Es posible que no necesite desactivar todas las opciones estrictas ... Por favor, eche un vistazo a esta respuesta sobre este problema.

Husam avatar Jul 08 '2017 10:07 Husam

Probablemente se trate de un problema de SQL_MODE . En tu config/database.php, en la conexión, cambia.

strict => false

Como en

'mysql' => [
    'driver' => 'mysql',
    'host' => env('DB_HOST', 'localhost'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'charset' => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix' => '',
    'strict' => false,
    'engine' => null,
],
Antonio Carlos Ribeiro avatar Dec 01 '2016 19:12 Antonio Carlos Ribeiro