Laravel 4迁移:安装ErrorException

时间:2013-06-03 19:34:27

标签: php mysql laravel laravel-4

php artisan migrate:install

{"error":{"type":"ErrorException","message":"PDO::__construct(): [2002] Connection refused (trying to connect via tcp:\/\/127.0.0.1:3306)","file":"\/Applications\/MAMP\/htdocs\/DRCSports\/vendor\/laravel\/framework\/src\/Illuminate\/Database\/Connectors\/Connector.php","line":47}}

在我的database.php中,我已将信息更新为mysql

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '127.0.0.1',
        'database'  => 'Laravel_DRCSports',
        'username'  => 'root',
        'password'  => 'root',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

我不确定我是否理解错误,但对我来说,看起来我的laravel没有正确连接到mysql。如果是这种情况,我不知道如何解决它。

7 个答案:

答案 0 :(得分:8)

问题是mysql在端口8888上运行,而Laravel的默认端口值是3306(因为它是mysql服务器的默认端口)。

解决方案是将“port”键添加到数组中(例如:'port'=> 8888)并且它将会 做这项工作。

答案 1 :(得分:2)

这就是我在/app/config/app.php

中所做的
'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost:8889',
            'database'  => 'pic',
            'username'  => 'root',
            'password'  => 'root',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',

        ),

并在php代码的底部

'redis'=>阵列(

    'cluster' => false,

    'default' => array(
        'host'     => '127.0.0.1',
        'port'     => 8888,
        'database' => 0,
    ),

),

它必须工作...

答案 2 :(得分:0)

当我在3306以外的端口上使用MySQL时,我遇到了问题(Laravel 4)。

浏览器运行的应用程序需要以下app / config / database语法:

'mysql' => array(
        ...
    'host' => 'localhost',
    'port' => '8889',
        ...
)

虽然命令行运行工匠需要以下语法:

'mysql' => array(
        ...
    'host' => 'localhost:8889',
        ...
)

这里描述的问题:
https://github.com/laravel/laravel/issues/1182

大多数文章建议使用Laravel环境进行解决方法,但它会导致重复的配置文件并违反DRY原则(不要重复自己),所以这是另一种选择:

在app / config / database.php的顶部:

$my_hostname = 'localhost';
$my_port     = '8889';
$my_database = 'database';
$my_username = 'username';
$my_password = 'password';

if (App::runningInConsole()) {        // artisan runs from the command line
    // change 'localhost' to 'localhost:8889'
    $my_hostname = $my_hostname.':'.$my_port;
}

进一步向下:

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => $my_hostname,
    'port'      => $my_port,
    'database'  => $my_database,
    'username'  => $my_username,
    'password'  => $my_password,
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

干杯

答案 3 :(得分:0)

在config / database.php和.env文件中更改数据库信息。

答案 4 :(得分:0)

我做了这些改变并像冠军一样工作:

data.php中的

: 主持人:localhost:8889 港口:8889 并且我的mamp有一个密码所以我有两种方法将密码放在database.php文件或.env文件中我将密码''值更改为'forge'然后在.env文件中使用我的MAMP密码 顺便说一下,您可以在端口选项卡(MySQL one)中看到MAMP应用程序中有关MAMP的具体信息

答案 5 :(得分:0)

确保编辑“.env”文件的这一部分。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=root

这对我有用。

答案 6 :(得分:-1)

我想你可以通过在app / config / database语法中添加以下代码来解决这个问题:

'mysql' => array(
    ...

    'pconnect' => 'TRUE',
    ...
)