CodeIgniter:需要打开失败 '<<document_root>>/system/database/drivers/dbdriver/dbdriver_driver.php'

CodeIgniter: Failed opening required '<<document_root>>/system/database/drivers/dbdriver/dbdriver_driver.php'

我是 codeigniter 的新手,我想连接到两个数据库以获取同一文件中的值。我在谷歌上搜索了一下,发现我们可以通过使用来做到这一点:

    $dsn1 = 'dbdriver://user:pass@ip/db1';  
    $dsn2 = 'dbdriver://user:pass@ip/db2';
    $DB1 = $this->load->database($dsn1,TRUE);
    $DB2 = $this->load->database($dsn2,TRUE);

现在这给出了这样的错误 dbdriver_driver.php 文件不存在。

这是全新安装。

我很快就会 post 数据库文件夹的内容。

编辑:数据库目录下没有drivers文件夹

Edit2:它说没有这样的文件或目录,这是真的。我应该安装插件才能工作还是我在安装 codeigniter 的过程中犯了错误或忘记了一部分

编辑 3:database.php 文件:

$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

主机名、用户名和密码也已设置。

你在这里把苹果和土豆混在一起。你的 config/database.php 应该是这样的:

$active_group = 'db1';  // the default db connection. 
$active_record = TRUE;

$db['db1']['hostname'] = 'localhost';//or ip
$db['db1']['username'] = 'username';
$db['db1']['password'] = 'pass';
$db['db1']['database'] = 'db_name';
$db['db1']['dbdriver'] = 'mysql';
$db['db1']['dbprefix'] = '';
$db['db1']['pconnect'] = TRUE;
$db['db1']['db_debug'] = TRUE;
$db['db1']['cache_on'] = FALSE;
$db['db1']['cachedir'] = '';
$db['db1']['char_set'] = 'utf8';
$db['db1']['dbcollat'] = 'utf8_general_ci';
$db['db1']['swap_pre'] = '';
$db['db1']['autoinit'] = TRUE;
$db['db1']['stricton'] = FALSE;

// the second db connection configuration
$db['db2']['hostname'] = 'localhost';//or ip
$db['db2']['username'] = 'username';
$db['db2']['password'] = 'pass';
$db['db2']['database'] = 'db_name';
$db['db2']['dbdriver'] = 'mysql';
$db['db2']['dbprefix'] = '';
$db['db2']['pconnect'] = TRUE;
$db['db2']['db_debug'] = TRUE;
$db['db2']['cache_on'] = FALSE;
$db['db2']['cachedir'] = '';
$db['db2']['char_set'] = 'utf8';
$db['db2']['dbcollat'] = 'utf8_general_ci';
$db['db2']['swap_pre'] = '';
$db['db2']['autoinit'] = TRUE;
$db['db2']['stricton'] = FALSE;

所以你配置了两个数据库连接。现在,您必须像这样在控制器或模型函数中使用它们:

$DB1 = $this->load->database('db1',TRUE);
$DB2 = $this->load->database('db2',TRUE);

编辑: 您的 DSN 变量应该包含建立连接所需的一切,它不会查看 config/database.php 文件。我想您实际上并没有将 $dsn1 = 'dbdriver://user:pass@ip/db1; 字符串中的 'dbdriver' 关键字更改为实际的数据库引擎名称(?),例如 'mysql'、'msqli'、'pdo' 或您使用的任何引擎。

所以如果你写 'dbdriver',CI 期望在 'system/database/drivers/' 目录中找到一个名为 'dbdriver'(具有确切名称)的文件夹,以及一个 php 文件名为 'dbdriver_driver.php'。如果你写'mysql',它会找到mysql驱动文件:'system/database/drivers/mysql/mysql_driver.php'。 其他配置变量,如 pconnect、db_debug 或其他,应作为查询字符串提及:

$dsn1 = 'mysql://user:pass@ip/db1?pconnect=true&db_debug=false&etc...';
$dsn2 = 'pdo://user:pass@ip/db1?pconnect=true&db_debug=false&etc...';