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 身份验证失败:未定义索引:模型