ODBC драйвера і їх установка

Перший і напевно найбільш серйозне питання полягає в напевно вже крилатою
фразою: "А де візьмеш?". Що сказати вам з цього приводу? Взяти можна в багатьох
місцях. У FAQ до PostgreSQL нас відсилають на http://www.openlinksw.com.
Ну був я там, але нічого не зрозумів. Де брати, як брати? Якщо у когось
вийшло, то напишіть мені з докладною інструкцією для ідіотів, щоб ваша
інструкція замінила то скигління, що я тут пишу. А поки дозвольте мені розповісти
як я знайшов ODBC драйвера.

Я пішов іншим шляхом. А саме через пошукові сервери. Серед тієї купи
посилань, що я отримав на запит "Postgres + ODBC" велика частина просто не
працювала, а переважна більшість інших видавало щось зовсім древнє.
Тим не менше я знайшов дещо, а саме файл postdrv.exe,
який я поклав сюди, щоб не змушувати вас витрачати час даремно.

Це саморозпаковується архів у встановленням через InstallShield. Тобто
все, що вам потрібно зробити для установки, це завантажити файл даних в якій-небудь
тимчасовий каталог, а потім запустити його. Однак, для того, щоб почати
працювати, установки недостатньо. Вам ще необхідно провести настройку ODBC
через ODBC Administrator, який викликається з вікна Панель управління
(Control Panel) під ім'ям 32bit ODBC.

Перед тим як почати опис процесу налаштування хочу відразу ж зробити
помітили. Ці ODBC драйвера не першої свіжості (хто скаже, де знайти свіже
скажу спасибі). У налаштуваннях ви побачите, що підтримуються протоколи тільки до
версії PostgreSQL 6.4, хоча є вже PostgreSQL 6.5. Однак, я випробував ці
драйвери і можу з упевненістю сказати, що з версією 6.5 вони цілком працюють.

Налаштування OBDC драйверів


Отже, запускаємо 32bit ODBC. У результаті отримуємо діалогове вікно,
такого вигляду:



У вас у вікні по всій видимості буде порожньо. У мене, як бачите вже встановлено
ODBC драйвер для Interbase. Натискаємо кнопку Add… і знову отримуємо
діалогове вікно виду:



Вибираємо "PostgreSQL" і натискаємо кнопку Готово. У результаті маємо ще
одне вікно виду:



Поля Database, Server, Username і Password у вашому випадку будуть
порожніми і вам необхідно заповнити їх самостійно. Тут ніяких труднощів
виникнути не повинно: Database – База даних, з якою ви будете
працювати, Server – Машина, на якій працює PostgreSQL,
Username і Password – Відповідно ім'я користувача і пароль з
використанням яких буде здійснюватися підключення до бази даних (це
значить, що на сервері з PostgreSQL у вас повинен бути заведений користувач
саме з таким ім'ям і паролем).

Параметр Port вам необхідно змінити тільки в тому випадку, якщо ви
працюєте з нестандартним портом (див. файл / etc / postgresql / postmaster.init на
предмет зміни номера порту).

Як видно з малюнка, є ще дві кнопки Driver і DataSource.

При натисканні на кнопку Driver отримуємо вікно виду:



У цьому вікні я рекомендую встановити прапорці Recognize Unique Indexes і
Parse Statement. Якщо вам потрібно протоколювання транзакцій, то
встановіть CommitLog(C:postodbc.log. Які налаштування включають інші
прапорці – поняття не маю (якщо хто пояснить, скажу спасибі).

При натисканні на кнопку DataSource отримуємо вікно виду:



Відразу ж рекомендую прибрати флажек ReadOnly. А ось Protocol
потрібно встановити залежно від версії PostgreSQL, з якою ви працюєте. Я
також включаю флажек Show Column, Так як він не заважає. А от для чого
потрібні інші налаштування я знову буду радий почути від грамотних людей.

Фінал


Ну ось власне і все. Тепер ви можете працювати з сервером
PostgreSQL, За допомогою будь-якої програми в Microsoft Windows, яка знає
як спілкуватися через ODBC драйвера.

Зауваження по Delphi


Ці два випадки з мого досвіду роботи з PostgreSQL з Delphi.

Першу фічу я виявив на методі AppendRecord. Виявляється, щоб даний
метод відпрацював успішно, необхідно першим елементом списку ставити nil, інакше, при
виконанні виникне помилка. Тобто тепер AppendRecord буде виглядати, наприклад
так:

MyQuery.AppendRecord ([nil, 1, "Василь", "Іванович", "Чапаєв"]);

а не так, як робиться, наприклад, при роботі з Interbase:

MyQuery.AppendRecord ([1, "Василь", "Іванович", "Чапаєв"]);

Друга фіча стосується якоїсь веселої ситуації, що виникла у мене один раз з
сервером. З якоїсь причини, той відмовляв в обслуговуванні клієнтів. Схоже,
це сталося тому, що в цей момент виконувався якийсь процес по
обслуговування бази даних на самому сервері.

Симптомом послужило те, що при зверненні до PostgreSQL з програми на
Deplhi, сама програма повісилася намертво. При цьому курсор приймав на екрані
характерну форму при виконанні SQL запиту. Однак цей запит все продовжував
виконуватися і продовжував … Через 5 хвилин мені це набридло і я зняв завдання
примусово.

Чим було викликано зависання програми, я навіть не знаю. За ідеєю, повинен був
відпрацювати тайм-аут, після якого повинна була з'явитися помилка, але
цього не сталося. Може винна крівость BDE, може ODBC драйвера.

Вилікувалося просто – на сервері був перезапущений PostgreSQL.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*