为什么密码参数在 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 文件很大,我无法手动转换或键入它以正确地为每一行播种。有人能帮我吗?我应该使用不同的方法吗?谢谢
详情:
- Ubuntu 子系统 Windows 10
- Ubuntu DigitalOcean 上的 18.04
- Laravel 7
- PHP 7.3
- MySQL (php7.3-mysql + mysql_server)
我太笨了,我偶然找到了解决办法。我执行了:
composer dumpautoload
php artisan config:clear
php artisan cache:clear
但我想 composer dumpautoload
就是答案。我不知道为什么。如果有人有完美的理由 composer dumpautoload
解决了我的问题,请随时发表评论:)
我尝试使用 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 文件很大,我无法手动转换或键入它以正确地为每一行播种。有人能帮我吗?我应该使用不同的方法吗?谢谢
详情:
- Ubuntu 子系统 Windows 10
- Ubuntu DigitalOcean 上的 18.04
- Laravel 7
- PHP 7.3
- MySQL (php7.3-mysql + mysql_server)
我太笨了,我偶然找到了解决办法。我执行了:
composer dumpautoload
php artisan config:clear
php artisan cache:clear
但我想 composer dumpautoload
就是答案。我不知道为什么。如果有人有完美的理由 composer dumpautoload
解决了我的问题,请随时发表评论:)