laravel 5无法迁移

时间:2016-01-07 20:08:11

标签: laravel laravel-5.1 artisan artisan-migrate

我知道这个问题以前已经回答过,但没有一个答案适用于我的情况。基本上,我有一个Laravel安装。我试着跑

php artisan migrate

我收到以下错误:

 Access denied for user 'homestead'@'localhost'

现在就是这笔交易。我不是在使用宅基地。这是标准的LAMP安装,我更改了config / database.php和.env文件中的数据库设置,以反映我的数据库的正确用户名和密码。我找不到工匠仍然试图使用宅基地用户的合理理由。我的APP_ENV设置为本地,app或config文件夹中没有生产文件夹。我不知道它在哪里拉动宅基地用户。

ETA:

我重新启动了apache,并运行了两个

php artisan config:clear 

php artisan cache:clear

它仍在向宅基地用户提供某些东西,但我根本无法弄清楚在哪里。

3 个答案:

答案 0 :(得分:0)

这是练习调试技巧的好任务! :)

所以,很明显Laravel从某个地方获得'宅基'用户名 - 可能是配置文件,代码中的默认值(实际上这不太可能,但我们正在调试)等等。

所以我的第一步是在Laravel应用程序的基本文件夹中执行此操作:

find . -type f -size -30k -exec grep -H "homestead" \{\} \;

哪个会在内部任何地方查找小于30千字节的文件,如果找到,则显示文件名和包含此模式的行。我们可以放心地假设“宅基地”没有存储在数据库的任何地方,因为它用于访问数据库,所以事先必须这样做。

找到地点后,修复错误可能就像编辑文件一样简单!

如果find没有返回结果,仍有可能:

  1. 如果您的Linux用户是“宅基地”,并且您尝试在未指定用户名的情况下连接到MySQL,则会自动使用“homestead”。这意味着Laravel由于某种原因无法访问您的配置文件(权限?错误路径?)

  2. 检查storage / logs / laravel.log并查看更多详细信息中的上一个错误。按文件浏览代码文件(错误中给出了文件列表,从顶部开始),看看它是如何获取MySQL用户名的。

答案 1 :(得分:0)

我真的不知道该特定构建发生了什么,但我正在关闭这个问题,只是为了完成它。我破坏了构建并重新开始没有任何问题。那里发生的事情将永远是一个谜。

答案 2 :(得分:-1)

您可以拥有多个database.php配置文件。加载的配置文件取决于执行应用程序的上下文。

例如,我的项目中有三个不同的database.php配置文件:

app/config/database.php
app/config/local/database.php
app/config/testing/database.php

在我的“测试”配置文件中,我定义了两个不同的连接:

return [
    'default'     => 'sqlite',

    'connections' => array(
        'mysql'  => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'test',
            'username'  => 'user',
            'password'  => 'secret',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
        'sqlite' => array(
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => ''
        ),
    )
];

请注意default密钥引用sqlite,因此我在mysql定义中输入的凭据无关紧要。 (除非我使用default

在运行时覆盖Config::set('database.default', 'mysql')

config/目录中搜索字符串'homestead'。您将找到应用程序正在加载的配置文件。更改default参数以匹配您要使用的连接。