Laravel数据库连接返回未定义的索引错误

laravel database connection returns undefined index error

提问人:Onur 提问时间:1/20/2014 更新时间:11/22/2018 访问量:21370

问:

我正在使用 laravel 4 框架开发一个项目。在我的数据库.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 数据库 laravel laravel-4

评论


答:

3赞 EspadaV8 1/20/2014 #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'    => '',
    ),

评论

0赞 Onur 1/20/2014
我做到了,但它不起作用。我还将 laravel 更新到 4.1,但仍然收到错误。
0赞 EspadaV8 1/20/2014
你仍然遇到同样的错误吗?我从我一直在处理的工作 L4.1 站点复制/粘贴该代码(只是更改值)。您还需要对 mysql2 部分进行更改(尽管我最初只尝试使用 1 个连接部分进行调试)。
6赞 ubuntus 7/2/2015 #2

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

'default' => 'mysql',

错误地从应用程序/配置/数据库.php。

1赞 a3rxander 1/14/2016 #3

转到根目录 .env 首先取此值。

3赞 Noe Lopez 6/26/2016 #4

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

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

从app/config/database.php。有必要有一个默认连接

0赞 The Unknown Dev 9/9/2017 #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

0赞 veyselsahin 11/22/2018 #6

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