簡體   English   中英

Laravel php artisan migrate 命令 - 沒有錯誤也沒有控制台輸出?

[英]Laravel php artisan migrate command - no errors and no console output?

我最近在 macOS High Sierra 10.13.6 上通過自制軟件全新安裝了 mysql 8.0.19。 當我執行brew services list時,我可以看到 mysql 服務已啟動。 我還可以通過控制台使用mysql -u root登錄並執行查詢等等。

我已經使用 Valet 安裝了一個新的 Laravel 項目,但無法運行數據庫遷移。 我的環境變量看起來都是正確的:

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

我可以使用此信息(無 root 密碼)連接到 MySQL Workbench。 然而,每當我運行php artisan migrate我都不會出錯,也沒有任何控制台輸出。 它只是卡住了。 當我使用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)

我嘗試在一個普通的 PHP 腳本上運行一個簡單的new mysqli(...)並且它也失敗了,所以它不是 Laravel 的東西。

在對此進行了更多研究之后,解決方案只是降級我的 PHP/MySQL 版本。 我使用的是 PHP 7.4+ 和 MySQL 8+。 我現在已經回滾到 PHP ~7.3 和 MySQL ~5.7。

我遇到了這個最近的線程,它詳細說明了這個問題。 與新的默認 MySQL 身份驗證插件有關。 我嘗試在該線程以及此處詳細說明的數據庫中手動更改它,但沒有任何運氣。

回滾對我來說最容易,謝謝大家!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM