Как подключить 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 ]