数据库Laravel php artisan迁移连接被拒绝

时间:2017-05-05 12:19:31

标签: laravel xampp connection artisan

当我使用' php artisan migrate'我收到以下错误消息:

  

[照亮\数据库\ QueryException]
    SQLSTATE [HY000] [2002]拒绝连接(SQL:select * from information_schema.tables where table_schema = homestead和table_name = migrations)

     

[PDOException]
    SQLSTATE [HY000] [2002]拒绝连接

我已经在装有XAMPP的Mac上安装了Laravel并进行了以下设置:

database.php中

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', ''),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

.ENV

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

我已经尝试了几种我可以在网上找到的解决方案,但到目前为止还没有一种解决方案。

8 个答案:

答案 0 :(得分:10)

这真的很烦人,但将DB_HOST=127.0.0.1更改为DB_HOST=localhost可以解决问题。试一试(显然你的文件权限必须是正确的)

答案 1 :(得分:2)

首先创建数据库。在此处阅读更多相关信息:http://www.complete-concrete-concise.com/web-tools/creating-a-mysql-database-using-xampp

假设您的新数据库名为:my_db。

在你的.env中使用它:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_db
DB_USERNAME=root
DB_PASSWORD=""

答案 2 :(得分:1)

如果您在database.php文件中有unix_socket => env('DB_SOCKET', ''),那么您在env.file中没有$ mysql_config --socket

您可以通过{{1}}

获取/ path / to / socket

答案 3 :(得分:0)

这来晚了,但可能会对某人有所帮助。我遇到了同样的错误,事实证明这是我的.env文件中的错字。代替DB_HOST,而是B_HOST。在您的情况下,可能是其他一些环境密钥。仔细看看,您会发现您的env文件格式错误。

答案 4 :(得分:0)

对我来说,解决方案不同于在网上找到的其他解决方案。

我不知不觉地在Mac上使用XAMPP的VM(虚拟机)版本,其功能与普通版本不同。 VM XAMPP interface looks like this.

如果您正在使用VM XAMPP,请将其卸载并安装correct XAMPP version here.

一旦我安装了新版本php artisan migrate,就可以使用。

答案 5 :(得分:0)

如果您正在使用MAMP,则在.env文件中:

DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=root

答案 6 :(得分:0)

我当时使用的是Vagrant机器来运行整个程序,但是我错误地在自己的机器上运行命令。这可能会对某人有所帮助。

答案 7 :(得分:0)

如果有人在使用Docker时遇到了这种情况,那么我有一个多阶段构建,第一个容器运行依赖项安装,第二个容器只是运行时。我没有意识到的是,使用Laravel脚本进行的安装会生成一个缓存的配置(bootstrap/cache/config.php),该配置用于代替config/database.php文件。

最后一步将以下内容添加到Dockerfile中:

RUN php artisan config:clear