php artisan migrate 抛出 PDOException

Posted

技术标签:

【中文标题】php artisan migrate 抛出 PDOException【英文标题】:php artisan migrate throws PDOException 【发布时间】:2015-04-12 08:08:46 【问题描述】:

我发现其他线程有同样的问题,但我没有解决它。文档说我应该取消注释我所做的 extension=php_pdo_mysql.dll 行。我正在使用 xampp 运行 Windows,并且正在尝试连接到 MySql 数据库。 但是我收到此错误:

$ php artisan migrate
exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for  user 'homestead'@'localhost' (using password: YES)' in C:\xampp\htdocs\your-project-name\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:47

我使用正确的 MySql 凭据修改了 database.php 文件,所以我不知道为什么我会收到错误消息,说我正在尝试连接 homestead 用户名,因为我不使用它。 我最终尝试使用宅基地,但当我尝试安装它时,我也收到与 PDO 扩展相关的错误

【问题讨论】:

你是detecting your environment吗? 谢谢!这就是问题所在。我不得不修改 .env 文件中的凭据。你能解释一下那里的database.php是什么吗? .env 文件中,您可以指定此特定环境的凭据。该文件在您的开发机器和生产服务器上具有不同的内容。在config/database.php 中,您指定特定于应用程序的值,这些值在本地/开发和生产中是相同的。此文件从 .env 读取数据库凭据,如果未在此处指定,它将使用来自 env() 辅助方法的第二个参数的默认值。 【参考方案1】:

您必须更改 Laravel 根目录中的 .env 文件。 提供适当的凭据,并确保给定的数据库名称存在于 MYSQL 中。

然后在修改 .env 文件后,在此处使用 env 对 config/database.php 进行更改,以便它会在 .env 文件中检查该变量。如果未找到,它将使用第二个参数作为值。

        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'laravel5'),
        'username'  => env('DB_USERNAME', 'root'),
        'password'  => env('DB_PASSWORD', 'ganesh'),

【讨论】:

以上是关于php artisan migrate 抛出 PDOException的主要内容,如果未能解决你的问题,请参考以下文章

php Laravel Artisan Migrate创建领域

执行 php artisan migrate:install报错

php artisan migrate 命令迁移错误

为啥 PHP artisan migrate 命令显示错误?

Lavarel 执行:php artisan migrate时报错

laravel php artisan migrate 错误(超时)