CodeIgniter:无法使用提供的设置错误消息连接到您的数据库服务器
我一直在使用CI很好,使用MySQL驱动程序。 我想使用mysqli驱动程序,但只要我改变它(只需添加“我”在MySQL的末尾,并添加了端口号),我得到以下错误信息
A Database Error Occurred Unable to connect to your database server using the provided settings. Filename: core/Loader.php Line Number: 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
我做错了什么?
谢谢,
对我来说,这个问题是在php.ini文件中。 mysql.default_socket属性指向一个不存在的目录中的文件。 该属性指向/var/mysql/mysql.sock
但在OSX中,该文件位于/tmp/mysql.sock
。
一旦我更新了php.ini中的条目并重新启动了networking服务器,问题就解决了。
我认为,PHP的configuration有问题。
首先,在./config/database.php结尾使用这个脚本debugging你的数据库连接:
... ... ... 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__);
然后看看问题是什么。
今天我在现场服务器中解决了这样的问题,我解决了这个问题
$db['default']['db_debug'] = TRUE;
至
$db['default']['db_debug'] = FALSE;
我通过改变解决了这个问题
$db['default']['pconnect'] = TRUE;
TO $db['default']['pconnect'] = FALSE;
在/application/config/database.php
SET $db['default']['db_debug']
为FALSE而不是TRUE。
$db['default']['db_debug'] = FALSE;
如果你已经改变了这一切,你可能没有在你的PHPconfiguration中安装或启用mysqli驱动程序。
使用phpinfo()或php.ini文件(extension = php_mysqli ….)检查它的存在。
问题解决了!
我把所有的网站都安装在了XAMMP中,然后我不得不把它转移到LAMP,在LAMP的SUSE安装中,我得到了这个错误。
问题是不应该初始化database.php文件中的这些参数。 只留下用户名和密码留空。 就是这样。
(我的第一个和蹩脚的猜测会是因为老版本的mysql,因为内置的安装附带旧版本。
(CI 3)对我来说,有效的是改变:
'hostname' => 'localhost' to 'hostname' => '127.0.0.1'
如果您使用这个来保护您的服务器: http : //www.thonky.com/how-to/prevent-base-64-decode-hack/
然后得到了错误: Code Igniter needs mysql_pconnect() in order to run
。
我意识到,一旦我意识到服务器上的所有代码点火器网站都坏了,所以这不是一个本地化的连接问题。
将$db['default']['dbdriver'] = 'mysql'
更改$db['default']['dbdriver'] = 'mysqli'
我解决了这个问题 在我的情况下,我只是改变了我的configuration。 “主机名”变成了“本地主机”
$active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'localhost';