CodeIgniter:无法使用提供的设置错误消息连接到数据库服务器

时间:2011-08-31 07:52:12

标签: php mysql codeigniter connection mysqli

我使用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

我做错了吗?

谢谢,

14 个答案:

答案 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;

/application/config/database.php

中的

答案 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';