Как подключить Yii к PostgreSQL

Заходим в файл /testdrive/protected/config/main.php и меняем все таким образом:

/*
'db'=>array(
	'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
*/
// uncomment the following to use a MySQL database
/*
'db'=>array(
	'connectionString' => 'mysql:host=localhost;dbname=БАЗА_MYSQL',
	'emulatePrepare' => true,
	'username' => 'ПОЛЬЗОВАТЕЛЬ_MYSQL',
	'password' => 'ПАРОЛЬ_MYSQL',
	'charset' => 'utf8',
),
*/
// PostgreSQL
'db' => array(
    // 5432 - это порт по умолчанию для PostgreSQL
    'connectionString' => 'pgsql:host=localhost;port=5432;dbname=БАЗА_POSTGRESQL',
    'username' => 'ПОЛЬЗОВАТЕЛЬ_POSTGRESQL',
    'password' => 'ПАРОЛЬ_POSTGRESQL', // обязателен, пустой может не сработать
    'charset' => 'utf8',
    'autoConnect' => false, // не устанавливать соединение при старте приложения - для оптимизации
),

А в самой базе данных PostgreSQL выполняем такой запрос:

CREATE TABLE tbl_user (
    id serial primary key,
    username text NOT NULL,
    password text NOT NULL,
    email text NOT NULL
);

INSERT INTO tbl_user (username, password, email) VALUES ('test1', 'pass1', 'test1@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test2', 'pass2', 'test2@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test3', 'pass3', 'test3@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test4', 'pass4', 'test4@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test5', 'pass5', 'test5@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test6', 'pass6', 'test6@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test7', 'pass7', 'test7@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test8', 'pass8', 'test8@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test9', 'pass9', 'test9@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test10', 'pass10', 'test10@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test11', 'pass11', 'test11@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test12', 'pass12', 'test12@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test13', 'pass13', 'test13@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test14', 'pass14', 'test14@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test15', 'pass15', 'test15@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test16', 'pass16', 'test16@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test17', 'pass17', 'test17@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test18', 'pass18', 'test18@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test19', 'pass19', 'test19@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test20', 'pass20', 'test20@example.com');
INSERT INTO tbl_user (username, password, email) VALUES ('test21', 'pass21', 'test21@example.com');

Стартовая настройка для работы фреймворка Yii с PostgreSQL готова.

Правда, у меня была еще такая ошибка, что PDO не мог подключиться к базе, надо настроить файл: pg_hba.conf (описание файла тут, и путь к файлу, как я заметил, у многих разный, найдите сами)

local all all md5
host all all 127.0.0.1 255.255.255.255 md5

И после перезагрузки базы (/etc/init.d/postgresql-9.3 restart) проблема решена.

/etc/init.d/postgresql-9.3 restart
Останавливается служба postgresql-9.3:                     [  OK  ]
Запускается служба postgresql-9.3:                         [  OK  ]
Копирование материалов разрешено только рерайтом, с ссылкой на главную страницу данного сайта.
© Автор - Игорь Вейник Евгеньевич www.veynik.ru 2013