postgresql ve codeigniter bağlanması

PostGresql kullanarak yeni ve bir yıl boyunca Codeigniter kullanıyorum.

Küçük bir postgresql veri tabanım var ve onu Codeigniter'dan çağırmak istiyorum.

Database.php dosyamda bu kurulum var:

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

$db['default'] = array(
'dsn'   => 'pgsql:host=localhost;port=5432;dbname=test;user=postgres;password=aPass',
// 'dsn'    => '',
'hostname' => 'localhost',
'username' => 'postgres',
'password' => 'aPass',
'database' => 'test',
'dbdriver' => '',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
 //'port' => '5432'
);

Bir kontrol cihazında bu fonksiyon var:

public function dbtest(){

    $this->load->database();

    $feeds = $this->db->get('vts_feeds');
    echo $feeds;die();
}

Elde ettiğim sonuç:

An Error Was Encountered
You have not selected a database type to connect to.

Neden çalışmıyor

3

10 cevap

Ayarlamaya çalış

dbdriver - Veritabanı türü. yani: mysql, postgres, odbc, vs.   küçük harfle belirtilir.

More Info: https://ellislab.com/codeigniter/user-guide/database/configuration.html

EDIT: Try this config for PDO in postgres

$db['default']['hostname'] = 'pgsql:host=localhost;dbname=yourdb'; //set host
$db['default']['username'] = 'your username'; //set username
$db['default']['password'] = 'your password'; //set password
$db['default']['database'] = 'your database'; //set databse
$db['default']['dbdriver'] = 'pdo'; //set driver here
7
katma
Teşekkürler! Yaptığım yapılandırma ile çalışmak için pdo koymak zorunda kaldı. Eğer dbdriver = postgres koyarsam ve sadece dsn'yi boş bırakırsam neden işe yaramadığını biliyor musunuz?
katma yazar Limon, kaynak
@Limon Düzenlenmiş cevabımı görün, bu size yardımcı olabilir, İyi şanslar
katma yazar Always Sunny, kaynak

Ayarlamaya çalış

dbdriver - Veritabanı türü. yani: mysql, postgres, odbc, vs.   küçük harfle belirtilir.

More Info: https://ellislab.com/codeigniter/user-guide/database/configuration.html

EDIT: Try this config for PDO in postgres

$db['default']['hostname'] = 'pgsql:host=localhost;dbname=yourdb'; //set host
$db['default']['username'] = 'your username'; //set username
$db['default']['password'] = 'your password'; //set password
$db['default']['database'] = 'your database'; //set databse
$db['default']['dbdriver'] = 'pdo'; //set driver here
7
katma
Teşekkürler! Yaptığım yapılandırma ile çalışmak için pdo koymak zorunda kaldı. Eğer dbdriver = postgres koyarsam ve sadece dsn'yi boş bırakırsam neden işe yaramadığını biliyor musunuz?
katma yazar Limon, kaynak
@Limon Düzenlenmiş cevabımı görün, bu size yardımcı olabilir, İyi şanslar
katma yazar Always Sunny, kaynak

Remove the 'dsn' string and change to 'dbdriver' => 'postgre' in the config array.

Despite the CI docs stating the value should be 'postgres' if you check the directory and file names in system>database>drivers the folder is actually called 'postgre', the file name 'postgre_driver.php' and the class 'CI_DB_postgre_driver' so we can assume the docs are wrong here. Weird this hasnt raised its ugly head before

3
katma
"geçersiz DB sürücüsü" diyor. Dsn'yi boş bıraktım ve dbdriver'ı "postgres" olarak değiştirdim
katma yazar Limon, kaynak
Evet haklısın. CI belgelerinde bir hata var, postgre ve postgres değil.
katma yazar Limon, kaynak
Cevabınızı yükselttim ama önce @BunnySunny tarafından verilen çözümü kullandım
katma yazar Limon, kaynak
Hmm garip. Sürücü veritabanı sistem veritabanı klasöründe var mı? Bu sadece CI_postgres_db_driver dosyasını yüklemeyi denemelidir
katma yazar Mike Miller, kaynak
Dosya yapısına bakıldığında doğru sürücü değeri 'postgre' gibi gözükmektedir, ki bu CI belgelerinin kesinlikle 'postgres' demesi gariptir. 'S' olmadan deneyin ve bunun yardımcı olup olmadığını görün - Cevabımı güncelledim
katma yazar Mike Miller, kaynak
Harika, cevap çalıştıysa doğru olarak işaretleyin
katma yazar Mike Miller, kaynak

database.php dosyasında okuduğu yer:

'dbdriver' => ' ',

Aşağıdaki argümanı koyun:

'dbdriver' => 'pgsql',
1
katma

database.php dosyasında okuduğu yer:

'dbdriver' => ' ',

Aşağıdaki argümanı koyun:

'dbdriver' => 'pgsql',
1
katma

database.php dosyasında okuduğu yer:

'dbdriver' => ' ',

Aşağıdaki argümanı koyun:

'dbdriver' => 'pgsql',
1
katma

Ben de aynı problemi yaşadım. Bu adımları dene

  1. don't remove dsn string add port=>5432 to your config array
  2. set dbdriver to 'dbdriver' => 'postgres'
  3. check your php.ini file if postgre extension is enabled or not extension=php_pdo_pgsql.dll
0
katma
uzantı zaten etkindi. Ben de bu şekilde denedim ama sadece dbdriver => pdo ve bahsettiğim dsn ile çalışıyor.
katma yazar Limon, kaynak

Sadece şimdi yaptım. Sen sadece git.

$db['default']['dsn'] = '';

Ve ayarlayın:

$db['default']['dbdriver'] = 'postgre';
0
katma

Sadece şimdi yaptım. Sen sadece git.

$db['default']['dsn'] = '';

Ve ayarlayın:

$db['default']['dbdriver'] = 'postgre';
0
katma

Sadece şimdi yaptım. Sen sadece git.

$db['default']['dsn'] = '';

Ve ayarlayın:

$db['default']['dbdriver'] = 'postgre';
0
katma