我使用MySQL驱动程序一直使用CI。我想改用MySQL驱动程序,但是只要我改变它(只需在MySQL末尾添加'i',并添加端口号)我就会收到以下错误消息
发生数据库错误
无法使用提供的设置连接到数据库服务器。
文件名:core / Loader.php
行号:232
我的设置如下:
$db['default']['hostname'] = $hostname;
$db['default']['username'] = $username;
$db['default']['password'] = $password;
$db['default']['database'] = $database;
$db['default']['dbdriver'] = 'mysqli';
$db['default']['port'] = "3306";
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$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;
where
$hostname = 'localhost';
$username = 'myusernamegoeshere';
$password = 'mypasswordgoeshere';
$database = 'mydatabasenamegoeshere';
我正在使用:
CI 2.0.2 php 5.3.4 Apache / 2.2.17(Unix)mysql 5.5.13 mysql.default_port 3306
我做错了吗?
谢谢,
答案 0 :(得分:103)
我认为,PHP配置存在问题。
首先,在 ./ config / database.php 末尾使用此脚本调试数据库连接:
...
...
...
echo '<pre>';
print_r($db['default']);
echo '</pre>';
echo 'Connecting to database: ' .$db['default']['database'];
$dbh=mysql_connect
(
$db['default']['hostname'],
$db['default']['username'],
$db['default']['password'])
or die('Cannot connect to the database because: ' . mysql_error());
mysql_select_db ($db['default']['database']);
echo '<br /> Connected OK:' ;
die( 'file: ' .__FILE__ . ' Line: ' .__LINE__);
然后看看问题是什么。
答案 1 :(得分:49)
今天我在实时服务器中遇到了这种问题,我解决了改变这一行的问题
$db['default']['db_debug'] = TRUE;
到
$db['default']['db_debug'] = FALSE;
答案 2 :(得分:29)
对我来说,问题出在php.ini文件中。 mysql.default_socket属性指向不存在的目录中的文件。该属性指向/var/mysql/mysql.sock
,但在OSX中,该文件位于/tmp/mysql.sock
。
一旦我更新了php.ini中的条目并重新启动了网络服务器,问题就解决了。
答案 3 :(得分:29)
我通过更改
解决了这个问题 $db['default']['pconnect'] = TRUE;
TO
$db['default']['pconnect'] = FALSE;
答案 4 :(得分:17)
将$db['default']['db_debug']
设为FALSE而不是TRUE。
$db['default']['db_debug'] = FALSE;
答案 5 :(得分:3)
如果您已完成更改,则可能没有在PHP配置中安装或启用mysqli驱动程序。
使用phpinfo()或php.ini文件(extension = php_mysqli ....)检查其存在。
答案 6 :(得分:2)
(CI 3)对我来说,有用的是改变:
'hostname' => 'localhost' to 'hostname' => '127.0.0.1'
答案 7 :(得分:2)
为mysqli
驱动程序测试扩展@Valeh Hajiyev的清晰答案:
在./config/database.php末尾使用此脚本调试数据库连接:
/* Your db config here */
$db['default'] = array(
// ...
'dbdriver' => 'mysqli',
// ...
);
/* Connection test: */
echo '<pre>';
print_r($db['default']);
echo '</pre>';
echo 'Connecting to database: ' .$db['default']['database'];
$mysqli_connection = new MySQLi($db['default']['hostname'],
$db['default']['username'],
$db['default']['password'],
$db['default']['database']);
if ($mysqli_connection->connect_error) {
echo "Not connected, error: " . $mysqli_connection->connect_error;
}
else {
echo "Connected.";
}
die( 'file: ' .__FILE__ . ' Line: ' .__LINE__);
答案 8 :(得分:1)
问题解决了!
我首先在XAMMP中设置了我的所有网站,然后我必须将其转移到LAMP,在LAMP的SUSE安装中,我收到此错误。
问题是不应该初始化database.php文件中的这些参数。 只需将用户名和密码留空即可。 就是这样。
(我的第一个和蹩脚的猜测是因为旧版本的mysql,因为内置安装附带旧版本。
答案 9 :(得分:0)
如果您使用它来保护您的服务器: http://www.thonky.com/how-to/prevent-base-64-decode-hack/
然后收到错误:Code Igniter needs mysql_pconnect() in order to run
。
一旦我意识到服务器上的所有Code Igniter网站都被破坏了,我就弄明白了,所以这不是本地化的连接问题。
答案 10 :(得分:0)
将$db['default']['dbdriver'] = 'mysql'
更改为$db['default']['dbdriver'] = 'mysqli'
答案 11 :(得分:0)
就我而言,存储是个问题。我的硬盘已满... 在硬件中腾出一些空间,您的网站将会正常运行
答案 12 :(得分:0)
问题解决了!
在您的配置中,指定数据库所在的端口号。您可以在phpMyAdmin的左上角找到端口号。看起来像这样
const DB_HOST = 'localhost:3308';
答案 13 :(得分:-2)
我已经解决了这个问题。在我的情况下,我只是改变了我的配置。 'hostname'成为'localhost'
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';