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=
我可以使用此信息连接到 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.
我碰到了this recent thread which detailed the problem. Something having to do with a new default MySQL authentication plugin. I attempted manually changing it in the database as detailed in that thread as well as here,但运气不好。
回滚对我来说是最简单的,谢谢大家!
我最近在 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=
我可以使用此信息连接到 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.
我碰到了this recent thread which detailed the problem. Something having to do with a new default MySQL authentication plugin. I attempted manually changing it in the database as detailed in that thread as well as here,但运气不好。
回滚对我来说是最简单的,谢谢大家!