在 .env
中为用户设置了以下值:
APP_ENV=local
APP_KEY=base64:jkUuiJJr7k+TzJwOZUExhJ/Mdr4i3Jg=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my-database
DB_USERNAME=my_user
DB_PASSWORD=123
在远程服务器上运行seeds,报错如下:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Seeded: SiteStringsTableSeeder ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Seeded: FileGroupsTableSeeder ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) Seeded: AreasTableSeeder PHP Fatal error: Class 'Faker\Factory' not found in /var/www/laravel/bootstrap/cache/compiled.php on line 7885
class SiteStringsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// mysqldump --max_allowed_packet=1G --no-create-info=TRUE --user=root --default-character-set=utf8 "db_old" "sitestring" > db_old_sitestring.sql
// mysql -uroot my_user < db_old_sitestring.sql
$pass_if_pass = env('DB_PASSWORD');
$pass_if_pass = $pass_if_pass ? ' -p'.$pass_if_pass.' ' : ' ';
exec("mysql -u".env('DB_USERNAME', 'root').$pass_if_pass.
env('DB_DATABASE', 'db')." < database/seeds/sitestrings_seed.sql");
}
}
为什么是 root,除非在 .env 中指定另一个用户?预先感谢您的回复
最佳答案
始终仅从配置文件中引用您的.env 变量。为此,请转到您的配置文件 app.php
并添加在返回数组中的 .env
文件中定义的 .env 变量,如下所示
return [
'db_username' => env('DB_USERNAME'),
'db_password' => env('DB_PASSWORD'),
'database' => env('DB_DATABASE'),
];
在您的应用程序代码中使用配置助手 config('app.db_username');
获取 .env 变量 DB_USERNAME
的值。
通过这样做,配置缓存将正常工作。
关于php - 在种子 laravel 中没有正确地从环境变量中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593754/