wake-up-neo.com

Laravel-MySQL-Migrationsfehler

Ich habe kürzlich mein Mac Book Pro formatiert, nachdem ich das Proyect von Github geklont und die benötigten Dinge wie MySql und Sequel Pro installiert hatte. Ich habe versucht, die Datenbankinformationen zu migrieren.

   Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER' (SQL: select * from information_schema.tables where table_schema = fisica and table_name = migrations)

  Exception trace:

  1   PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'")

Versionen: 

MySQL 8.0.11

Laravel 5.6.12

PHP 7.1.14 (cli)

DB_CONNECTION=mysql
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=fisica
DB_USERNAME=xxx
DB_PASSWORD=xxx

Ich habe die Datenbank mit Sequel PRO GUI erstellt

18
Julian Mendez

Ich fand die Lösungen endlich vor ein paar Tagen und erinnerte mich an diesen Beitrag ... In der config/database.php-Datei im mysql-Tag sollten die SQL-Modi hinzugefügt werden, um diesen Fehler zu überspringen. https://dev.mysql.com/doc/refman/8.0/de/sql-mode.html#sql-mode-full

Mein MySQL-Array endete folgendermaßen:

    'mysql' => [
        'driver' => 'mysql',
        'Host' => env('DB_Host', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
        'modes'  => [
            'ONLY_FULL_GROUP_BY',
            'STRICT_TRANS_TABLES',
            'NO_ZERO_IN_DATE',
            'NO_ZERO_DATE',
            'ERROR_FOR_DIVISION_BY_ZERO',
            'NO_ENGINE_SUBSTITUTION',
        ],
    ],
45
Julian Mendez

Beim Lesen der Dokumentation zu mysql 8.0 sieht es so aus, als ob NO_AUTO_CREATE_USER aus dem SQL-Modus entfernt wurde. Ich vermute, Ihre my.cnf-Datei hat darauf Bezug genommen und sollte intern aus Ihrer conf- und mysql-Einstellung entfernt werden, und Ihre mysqld wurde neu gestartet. 

Denken Sie daran, ich habe kein Upgrade auf mysql 8.0 vorgenommen und habe nur die Dokumentation gelesen. Ich bin glücklich mit 5.6.

https://dev.mysql.com/doc/refman/8.0/de/mysql-nutshell.html

Verwenden von GRANT zum Erstellen von Benutzern. Verwenden Sie stattdessen CREATE USER. Wenn Sie diese Vorgehensweise befolgen, ist der SQL-Modus NO_AUTO_CREATE_USER für GRANT-Anweisungen unerheblich und wird daher auch entfernt.

1
Dom

Sie müssen diesen Code am Ende von jeder der Verbindungen, die Sie mit dem MySQL-Treiber haben, hinzufügen.

'modes' => [
             'ONLY_FULL_GROUP_BY',
             'STRICT_TRANS_TABLES',
             'NO_ZERO_IN_DATE',
             'NO_ZERO_DATE',
             'ERROR_FOR_DIVISION_BY_ZERO',
             'NO_ENGINE_SUBSTITUTION',
         ],
1
eValdezate

Im Ordner:

config/database.php

'mysql' =[
    ...
    'strict' => false
]

Deaktivieren Sie auch sql_mode

über SQL:

SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';

über my.cnf in der Überschrift [mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION

Testen Sie die Änderungen:

SHOW VARIABLES LIKE 'sql_mode';
0
Efrén