【问题标题】:Laravel 4 migration:install ErrorExceptionLaravel 4 迁移:安装 ErrorException
【发布时间】:2013-05-30 01:26:45
【问题描述】:
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。如果是这种情况,我不知道如何解决它。

【问题讨论】:

  • 看起来 PDO 无法打开此主机的连接:ip。你确定 127.0.0.1 上有 3306 端口的 mysql 服务器吗?您是否尝试过 telnet 到此主机并查看是否能够连接?
  • 端口不是 3306,而是 8888。我看到它要去端口 3306,我只是不确定我在哪里将其更改为 8888。 telnet 127.0.0.1 8888 Trying 127.0.0.1... 连接到本地主机。转义字符是 '^]'。 H 5.5.9g;0|Br8?Sd~m'xH@G#tFmysql_native_password
  • 只需添加到数组中:'port' => 8888

标签: php mysql laravel laravel-4


【解决方案1】:

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

解决方案是在数组中添加 'port' 键(例如:'port' => 8888),它会 做这项工作。

【讨论】:

    【解决方案2】:

    当我在 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】:

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

      'mysql' => array(
          ...
      
          'pconnect' => 'TRUE',
          ...
      )
      

      【讨论】:

        【解决方案4】:

        这就是我所做的……在 /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,
            ),
        
        ),
        

        它必须工作......

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            在 database.php 中: 主机:本地主机:8889 端口:8889 我的 mamp 有一个密码,所以我有两种方法可以将该密码放入 database.php 文件或 .env 文件中,我将密码“”值更改为“forge”,然后在 .env 文件中使用我的 MAMP 密码 顺便说一句,您可以在端口选项卡(MySQL 之一)中的 MAMP 应用程序中查看有关 MAMP 的具体信息

            【讨论】:

              【解决方案7】:

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

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

              这对我有用。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2017-05-29
                • 2016-05-30
                • 1970-01-01
                • 1970-01-01
                • 2014-06-10
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多