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

Posted

技术标签:

【中文标题】laravel 数据库连接返回未定义的索引错误【英文标题】:laravel database connection returns undefined index error 【发布时间】: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 连接。代码有什么问题?

【问题讨论】:

【参考方案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 权限。

【讨论】:

以上是关于laravel 数据库连接返回未定义的索引错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 迁移未定义索引

未找到 Laravel 注册索引并创建错误

未定义索引+未选择数据库[重复]

使用新模型和保护的 Laravel 身份验证失败:未定义索引:模型

Laravel PackageManifest.php:未定义索引:名称

Laravel PackageManifest.php 第 131 行:未定义索引:名称