繁体   English   中英

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

[英]Why password argument read as username in exec()

我尝试在 Laravel 播种机中使用exec() function 使用 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时,我得到了这个 output

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
  • DigitalOcean 上的 Ubuntu 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解决了我的问题,请随时发表评论:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM