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

问题描述 投票:0回答:1

我尝试使用Laravel Seeder中的exec()函数使用sql文件作为种子,如下所示:

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),总是这样。

但是另一方面,使用带有下面这一行代码的窗口,效果很好。

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

之所以这样做,是因为mysql文件很大,我无法将其转换或手动键入以正确地播种每行。有人能帮我吗?我应该使用其他方法吗?谢谢

详细信息:

  • Windows 10上的Ubuntu子系统
  • DigitalOcean上的Ubuntu 18.04
  • Laravel 7
  • PHP 7.3
  • MySQL(php7.3-mysql + mysql_server)
php mysql laravel ubuntu exec
1个回答
0
投票

我很笨,我偶然找到了解决方案。我执行过:

composer dumpautoload

php artisan config:clear

php artisan cache:clear

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

© www.soinside.com 2019 - 2024. All rights reserved.