【问题标题】:laravel database connection returns undefined index errorlaravel 数据库连接返回未定义的索引错误
【发布时间】:2014-02-09 06:39:23
【问题描述】:

我正在使用 laravel 4 框架开发一个项目。在我的 database.php 文件中,我收到以下错误:

  Undefined index: driver 

我的连接如下:

    $connections = array(
            'mysql' => array(
                'read' => array(
                    'host'      => 'localhost',
                    'driver'    => 'mysql',
                    'database'  => 'app_system',
                    'username'  => 'root',
                    'password'  => 'root',
                    'charset'   => 'utf8',
                    'collation' => 'utf8_unicode_ci',
                    'prefix'    => '',
                ),
                'write' => array(
                    'host'      => 'localhost',
                    'driver'    => 'mysql',
                    'database'  => 'app_system',
                    'username'  => 'root',
                    'password'  => 'root',
                    'charset'   => 'utf8',
                    'collation' => 'utf8_unicode_ci',
                    'prefix'    => '',
                ),
            ),

            'mysql2' => array(
                'read' => array(
                    'host'  => 'localhost',
                    'driver'    => 'mysql',
                    'database'  => 'app_userdata',
                    'username'  => 'root',
                    'password'  => 'root',
                    'charset'   => 'utf8',
                    'collation' => 'utf8_unicode_ci',
                    'prefix'    => '',                      
                ),
                'write' => array(
                    'host'  => 'localhost',
                    'driver'    => 'mysql',
                    'database'  => 'app_userdata',
                    'username'  => 'root',
                    'password'  => 'root',
                    'charset'   => 'utf8',
                    'collation' => 'utf8_unicode_ci',
                    'prefix'    => '',                      
                ),
            )
        );

我也在使用环境来设置不同的 mysql 连接。代码有什么问题?

【问题讨论】:

    标签: php mysql database laravel laravel-4


    【解决方案1】:

    将“驱动程序”键向上移动一个级别应该可以解决问题。

    $connections = array(
        'mysql' => array(
            'read' => array(
                'host'      => 'localhost',
                'database'  => 'app_system',
                'username'  => 'root',
                'password'  => 'root',
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
            ),
            'write' => array(
                'host'      => 'localhost',
                'database'  => 'app_system',
                'username'  => 'root',
                'password'  => 'root',
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
            ),
            'driver' => 'mysql'
        ),
    

    我也可以移动大多数共享的其他参数

    $connections = array(
        'mysql' => array(
            'read' => array(
                'host'      => 'localhost',
            ),
            'write' => array(
                'host'      => 'localhost',
            ),
            'driver'    => 'mysql',
            'database'  => 'app_system',
            'username'  => 'root',
            'password'  => 'root',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
    

    【讨论】:

    • 我做到了,但它不起作用。我还将 laravel 更新到 4.1,但仍然出现错误。
    • 您是否仍然遇到同样的错误?我从我一直在处理的工作 L4.1 站点复制/粘贴了该代码(只是更改了值)。您还需要对 mysql2 部分进行更改(尽管我最初会尝试仅使用 1 个连接部分进行调试)。
    【解决方案2】:

    就我而言,这是因为我删除了

    'default' => 'mysql',
    

    来自 app/config/database.php 的错误。

    【讨论】:

      【解决方案3】:

      进入根目录 .env 首先取此值。

      【讨论】:

        【解决方案4】:

        这发生在我身上,因为我删除了

        'default' =>env('DB_CONNECTION', 'mysql'),
        

        来自 app/config/database.php。必须有默认连接

        【讨论】:

          【解决方案5】:

          如果您有多个不同的连接(例如到同一主机上的多个数据库)并且设置默认连接没有意义,您可以在 Model 类中指定一个连接。

          <?php 
          namespace App\Http\Models;
          
          use Illuminate\Database\Eloquent\Model;
          
          class Character extends Model {
          
              protected $connection = 'my_db_connection_name_here';
          }
          

          这将在config/database.php 中定义的连接上。

          【讨论】:

            【解决方案6】:

            我通过添加一些权限解决了我的问题。我的 .env 文件存在但不可读。我刚刚添加了 755 权限。

            【讨论】:

              猜你喜欢
              • 2018-10-10
              • 2016-04-15
              • 2018-01-22
              • 2019-07-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多