web-dev-qa-db-ja.com

CodeIgniter:提供された設定エラーメッセージを使用してデータベースサーバーに接続できません

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

私は何か間違っていますか?

ありがとうございました、

48
Onema

私にとっては、問題はphp.iniファイルにありました。プロパティmysql.default_socketは、存在しないディレクトリのファイルを指していました。プロパティは/var/mysql/mysql.sockを指していましたが、OSXでは、ファイルは/tmp/mysql.sockにありました。

Php.iniのエントリを更新してWebサーバーを再起動すると、問題は解決しました。

29
ken

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__); 

次に、問題が何であるかを確認します。

103
Valeh Hajiyev

今日、ライブサーバーでこの種の問題に陥り、この行を変更する問題を解決しました

$db['default']['db_debug'] = TRUE;

$db['default']['db_debug'] = FALSE;
49
imsyedahmed

変更して問題を解決しました

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

in / application/config/database.php

29
kamal

$db['default']['db_debug']をTRUEではなくFALSEに設定します。

$db['default']['db_debug'] = FALSE;
17
Bhumi Singhal

変更しただけの場合は、PHP構成内でmysqliドライバーをインストールまたは有効にしていない可能性があります。

Phpinfo()を使用するか、php.iniファイル(extension = php_mysqli ....)でその存在を確認します。

3
Craig A Rodway

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__);
2
MarcM

(CI 3)私にとって、働いていたのは変化していました:

'hostname' => 'localhost' to 'hostname' => '127.0.0.1'
2
Shina

問題が解決しました!

最初にすべてのWebサイトをXAMMPでセットアップしてから、このエラーが発生したLAMPのSUSEインストールでLAMPに転送する必要がありました。

問題は、database.phpファイル内のこれらのパラメーターを初期化しないことです。ユーザー名とパスワードを空白のままにしてください。それだけです。

(組み込みのインストールには古いバージョンが付属しているので、私の最初の不確実な推測は、古いバージョンのmysqlによるものです。

1
Helena

$db['default']['dbdriver'] = 'mysql'$db['default']['dbdriver'] = 'mysqli'に変更します

0
Bappi Datta

私の場合、ストレージは問題でした。ハードドライブがいっぱいになった...ハードウェアにスペースを確保すれば、サイトは正常に機能します。

0
Ammad Naeem