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

时间:2014-01-20 07:13:24

标签: php mysql database laravel laravel-4

我正在使用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连接。代码有什么问题?

6 个答案:

答案 0 :(得分:6)

在我的情况下,这是因为我删除了

'default' => 'mysql',

错误地从app / config / database.php。

答案 1 :(得分:3)

将“驱动程序”键移到某个级别可以解决问题。

$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'    => '',
    ),

答案 2 :(得分:2)

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

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

来自app / config / database.php。这是必要的默认连接

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果您有多个不同的连接(例如,同一主机上的多个数据库)并且设置默认连接没有意义,则可以在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中定义的连接。

答案 5 :(得分:0)

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