Codeigniter错误“无法使用提供的设置连接到数据库服务器”

时间:2012-03-03 09:47:52

标签: php codeigniter

当我尝试在我的域上上传此项目时,面临错误“无法使用提供的设置连接到您的数据库服务器”

我已检查 config.php database.php 文件,所有信息均正确无误:

 $db['default']['hostname'] = "etc.com";
 $db['default']['username'] = "etc"; 
 $db['default']['password'] = "etc@etc";
 $db['default']['database'] = "visiting_link";
 $db['default']['dbdriver'] = "mysql";
 $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"; 

这个问题的解决方案是什么?请参考任何帮助材料。 我正在使用fileZilla。
谢谢!

8 个答案:

答案 0 :(得分:14)

设置" db_debug"错误解决了我的问题。

我使用Snow Leopard。

编辑:db_debug只是模糊了我的方向。我的案例中的解决方案只是mysql.sock参考路径,在这个问题上解决了:Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in

OS X使用/tmp/mysql.sock,默认情况下php.ini引用/var/mysql/mysql.sock。只需创建符号链接即可解决问题:

sudo mkdir -p /var/mysql/ && cd /var/mysql/
sudo ln -s /tmp/mysql.sock ./mysql.sock

答案 1 :(得分:3)

尝试将'dbdriver'设置为'mysqli'

$db['default']['dbdriver'] = "mysqli";

这是MySQL改进的扩展(http://php.net/manual/en/book.mysqli.php),你的服务器可能被设置为使用它而不是标准的MySQL扩展。

当所有其他设置都正确时,我发现这种情况发生了几次,因为如果选择了错误的驱动程序,连接将会失败。

答案 2 :(得分:2)

如果数据库设置正确,则其他地方出现错误:

  • 也许数据库不接受来自任何地方的连接;在这种情况下,您需要允许来自“用户名”@“服务器IP”

  • 的连接
  • 由于php.ini设置,防火墙或其他原因,PHP或服务器本身不允许连接

返回CI数据库设置,您需要确保它们是正确的。你确定“主机名”是否正确?

答案 3 :(得分:1)

如果您使用codeigniter 3,请使用最新版本的PHP。一旦我得到这些错误,然后我更新我的PHP然后它在我的项目成功设置codeigniter后工作。

请关注您的application / config / database.php

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'db_bdtimes', // your database name
    '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
);

答案 4 :(得分:0)

试试这个$ db ['default'] ['hostname'] =“localhost”;

答案 5 :(得分:0)

如果您在共享托管环境中遇到此问题。然后我认为您必须提供与cpanel / hosting credentials相同的数据库凭据。

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "cpanel/hosting username"; 
$db['default']['password'] = "cpanel/hosting password";
$db['default']['database'] = "dbname";

答案 6 :(得分:0)

这解决了我在服务器上部署codeigniter CMS时遇到的问题,尽管它在localhost中使用TRUE属性工作正常。 将database.php中的这一行更改为:

$db['default']['pconnect'] = FALSE;

同时检查此行是否与服务器数据库的排序规则匹配(对于所有表格):

$db['default']['dbcollat'] = "utf8_general_ci";

答案 7 :(得分:0)

我收到此错误

    <div id="container">
        <h1>A Database Error Occurred</h1>
        <p>Unable to connect to your database server using the provided settings.</p>
        <p>Filename: C:/xampp/htdocs/WORK/Vishal/UI-Demo/system/database/DB_driver.php</p>
        <p>Line Number: 436</p>
    </div>

我通过在database.php

中将更改调试选项更改为FALSE来解决此错误

'db_debug'=&gt; (环境!=='生产'),

'db_debug'=&gt; FALSE,

更改此

$db['default'] = array(
'dsn'   => '',
'hostname' => 'XXXX',
'username' => 'XXXX',
'password' => 'XXXX',
'database' => 'XXX',
'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

);

$db['default'] = array(
'dsn'   => '',
'hostname' => 'XXXX',
'username' => 'XXXX',
'password' => 'XXXX',
'database' => 'XXX',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => FALSE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE

);