Laravel php команда artisan migrate - нет ошибок и нет вывода на консоль? - PullRequest
1 голос
/ 19 января 2020

Я недавно сделал бесплатную sh установку mysql 8.0.19 с помощью homebrew на macOS High Sierra 10.13.6. Я вижу, что служба mysql запускается, когда я выполняю brew services list. Я также могу войти через консоль с помощью mysql -u root и выполнить запросы и еще много чего.

Я установил проект fre sh Laravel, используя Valet, но не могу запустить миграцию базы данных. Все мои переменные окружения выглядят корректно:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

Я могу подключиться к MySQL Workbench, используя эту информацию (нет root pw). Тем не менее, всякий раз, когда я запускаю php artisan migrate, я не получаю никаких ошибок и никакой вывод на консоль вообще. Это просто застревает. То же самое происходит, когда я go с php artisan tinker, а затем DB::connection()->getPdo(). Нет вывода и нет ошибок. Ничто не регистрируется в storage/logs.

Релевантно config/database.php:

...

'default' => env('DB_CONNECTION', 'mysql'),


'connections' => [


    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        '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' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],

],

...

Сброс DB::connection() при случайном просмотре дает правильную конфигурацию:

protected 'config' => 
    array (size=15)
      'driver' => string 'mysql' (length=5)
      'host' => string '127.0.0.1' (length=9)
      'port' => string '3306' (length=4)
      'database' => string 'laravel' (length=7)
      'username' => string 'root' (length=4)
      'password' => string '' (length=0)
      'unix_socket' => string '' (length=0)
      'charset' => string 'utf8mb4' (length=7)
      'collation' => string 'utf8mb4_unicode_ci' (length=18)
      'prefix' => string '' (length=0)
      'prefix_indexes' => boolean true
      'strict' => boolean true
      'engine' => null
      'options' => 
        array (size=0)
          empty
      'name' => string 'mysql' (length=5)

1 Ответ

0 голосов
/ 21 января 2020

Я попытался запустить простой new mysqli(...) на простом PHP сценарии, но он также не удался, поэтому это не было Laravel.

После более подробного изучения этой проблемы решение состояло в том, чтобы просто понизить версию PHP / MySQL. Я использовал PHP 7.4+ и MySQL 8+. Теперь я откатился до PHP ~ 7.3 и MySQL ~ 5.7.

Я наткнулся на эту недавнюю ветку , в которой подробно описана проблема. Что-то связанное с новым стандартным MySQL плагином аутентификации. Я попытался вручную изменить его в базе данных, как подробно описано в этой теме, а также здесь , но безуспешно.

Откат был для меня самым простым, спасибо всем!

...