为什么密码参数在 exec() 中读取为用户名

Why password argument read as username in exec()

我尝试使用 sql 文件使用 Laravel 播种器中的 exec() 函数进行播种,如下所示:

exec("mysql -u ". env('DB_USERNAME') ." -p". env('DB_PASSWORD') ." ". env('DB_DATABASE') ." < " . database_path() . '/seeds/table.sql');

但是当执行php artisan db:seed --class MySeeder时,我得到了这个输出

ERROR 1045 (28000): Access denied for user '-p'@'localhost' (using password: NO)

无论我使用什么密码参数(-p--password),它总是这样。

但在另一方面,使用 windows 和下面这行代码,效果很好。

exec("C:/xampp/mysql/bin/mysql -u " . env('DB_USERNAME') . " --password=" . env('DB_PASSWORD') . " " . env('DB_DATABASE') . " < " . database_path() . '/seeds/table.sql');

我这样做的原因是 mysql 文件很大,我无法手动转换或键入它以正确地为每一行播种。有人能帮我吗?我应该使用不同的方法吗?谢谢

详情:

我太笨了,我偶然找到了解决办法。我执行了:

composer dumpautoload

php artisan config:clear

php artisan cache:clear

但我想 composer dumpautoload 就是答案。我不知道为什么。如果有人有完美的理由 composer dumpautoload 解决了我的问题,请随时发表评论:)