我是Codeigniter PHP框架的新手。当我测试我的应用程序时,我收到“未知数据库db_name”错误。我浏览了几个站点,但没有找到问题的解决方案,因为我正在尝试连接wamp的mysql数据库。任何帮助都会很明显。
以下是config文件夹中的database.php:image describing Test database:
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'test',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
答案 0 :(得分:5)
我在安装新的wampserver 3.2.0时遇到了同样的错误,默认情况下会安装MariaDB并将端口3306分配给它,这甚至是邪恶的,您甚至无法更改它。我认为codeigniter / php默认会尝试连接到此端口。 我使用了following,它对我有用,即主机名=>'localhost:3308'
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost:3308',
'username' => 'root',
'password' => '',
'database' => 'soft',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
答案 1 :(得分:1)
我做了什么来处理db是否存在:
首先在application / config / database.php中更改此内容
'db_debug' => (ENVIRONMENT !== 'production')
到
'db_debug' => FALSE;
然后在控制器中添加这两个
$this->load->dbforge();
$this->load->dbutil();
然后在你的方法中检查
if( $this->dbutil->database_exists($this->db->database))
{
echo 'Database Already Exists';
}
else
{
if($this->dbforge->create_database($this->db->database))
{
echo 'Database created successfully !';
}else
{
print_r($this->db->error());
/*
Array (
[code] => 1007
[message] => Can't create database 'my_db'; database exists
)
*/
}
}
答案 2 :(得分:1)
我也收到此错误。 application / config / database.php文件中有2个字段应与您的实际数据库匹配:
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
请确保实际的数据库与上述文件中提到的类型和字符集相同。