One*_*ema 49 php mysql connection mysqli codeigniter
我使用MySQL驱动程序就好了.我想改用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';
Run Code Online (Sandbox Code Playgroud)
我正在使用:
CI 2.0.2 php 5.3.4 Apache/2.2.17(Unix)mysql 5.5.13 mysql.default_port 3306
我做错了吗?
谢谢,
Val*_*yev 104
我认为,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__);
Run Code Online (Sandbox Code Playgroud)
然后看看问题是什么.
ims*_*med 50
今天我在实时服务器中遇到了这种问题,我解决了改变这条线的问题
$db['default']['db_debug'] = TRUE;
Run Code Online (Sandbox Code Playgroud)
至
$db['default']['db_debug'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
小智 29
对我来说问题出在php.ini文件中.mysql.default_socket属性指向不存在的目录中的文件.该属性指向/var/mysql/mysql.sock
但在OSX中,该文件位于/tmp/mysql.sock
.
一旦我更新了php.ini中的条目并重新启动了网络服务器,问题就解决了.
小智 29
我通过改变解决了这个问题
$db['default']['pconnect'] = TRUE;
至
$db['default']['pconnect'] = FALSE;
在/application/config/database.php中
Bhu*_*hal 17
SET $db['default']['db_debug']
为FALSE而不是TRUE.
$db['default']['db_debug'] = FALSE;
Run Code Online (Sandbox Code Playgroud)
扩展 @Valeh Hajiyev 对于mysqli
驱动程序测试的伟大而清晰的答案:
使用 ./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__);
Run Code Online (Sandbox Code Playgroud)