Visual FoxPro + PostgreSQL

Изображение ostwolf

Доброго времени суток!
Являюсь новичком в построении клиент-сервер. До этого немного писал приложения под MSSQL. Решил попробовать PostgreSQL 8.3 из под Visual FoxPro 9.0
1. Установил PostgreSQL на Windows XP SP2.......
2. Создал Юзера: ostwolf, под паролем: star2008 к примеру (может тоже влияет, уже не знаю в чем может быть дело =) )
3. Создал базу: GCS_DB (владелец: ostwolf)
4. В СВОЙСТВА-->ПРИВИЛЕГИИ дает выбрать только роль public, которой разрешил все...
5. Создал таблицу: tbClient, поля: cl_clientId (numeric 3), cl_clientName (character 100)
6. В СВОЙСТВА-->ПРИВИЛЕГИИ дает выбрать роль public и ostwolf, которым также дал все права...

7. Настраиваю ODBC (смотреть postgres.jpg: http://www.postgresql.ru.net/files/posgres.JPG )
8. Жму TEST... Connection successful!

9. Пробую в FoxPro сделать RemoteView... с помощью ODBC... при тесте коннекта выдает сукссесс =), но только стоит попробовать сделать SELECT, как выдает сообщение об ошибке: Connectivity error: ERROR: ???ostwolf" ?????? Error while executing the querry...

10. Если делать RemoteView через Wizard то выдает сообщение: The Remote View Wizard was unable to obtain column information for this remote table. This may be the result of an ODBC error, or the remote table may not be owned by the current user, or the table doesn't have columns.

ВложениеРазмер
posgres.JPG41.9 kb

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

включите

включите логирование запросов в ODBC и посмотрите, что уходит на сервер,
выполните эти запросы в PgAdmin.

Visual FoxPro + PostgreSQL

Изображение ostwolf

Вот лог ODBC:
[0.023]conn=021E3C80, PGAPI_DriverConnect( in)='DSN=PostgreSQL30W;', fDriverCompletion=1
[0.026]DSN info: DSN='PostgreSQL30W',server='localhost',port='5432',dbase='GCS_DB',user='ostwolf',passwd='xxxxx'
[0.027] onlyread='0',protocol='7.4',showoid='0',fakeoidindex='0',showsystable='0'
[0.028] conn_settings='',conn_encoding='(null)'
[0.028] translation_dll='',translation_option=''
[0.030]Driver Version='08.03.0100,200801220001' linking 1400 static Multithread library
[0.031]Global Options: fetch=100, socket=4096, unknown_sizes=0, max_varchar_size=255, max_longvarchar_size=8190
[0.032] disable_optimizer=1, ksqo=1, unique_index=1, use_declarefetch=0
[0.032] text_as_longvarchar=1, unknowns_as_longvarchar=0, bools_as_char=1 NAMEDATALEN=64
[0.033] extra_systable_prefixes='dd_;', conn_settings='' conn_encoding=''
[0.388] [ PostgreSQL version string = '8.3.1' ]
[0.389] [ PostgreSQL version number = '8.3' ]
[0.397]conn=021E3C80, query='select oid, typbasetype from pg_type where typname = 'lo''
[0.533] [ fetched 0 rows ]
[0.536] [ Large Object oid = -999 ]
[0.536] [ Client encoding = 'UTF8' (code = 6) ]
[0.537]conn=021E3C80, PGAPI_DriverConnect(out)='DSN=PostgreSQL30W;DATABASE=GCS_DB;SERVER=localhost;PORT=5432;UID=ostwolf;PWD=xxxxxxxx;CA=d;A6=;A7=100;A8=4096;B0=255;B1=8190;BI=0;C2=dd_;;CX=1b50fbb;A1=7.4-1'
[0.670]conn=021E3C80, query='select relname, nspname, relkind from pg_catalog.pg_class c, pg_catalog.pg_namespace n where relkind in ('r', 'v') and nspname not in ('pg_catalog', 'information_schema', 'pg_toast', 'pg_temp_1') and n.oid = relnamespace order by nspname, relname'
[0.763] [ fetched 1 rows ]
[0.868]conn=021E3C80, query='select * from tbClient where 0 = 1'
[0.875]ERROR from backend during send_query: 'SERROR'
[0.875]ERROR from backend during send_query: 'C42P01'
[0.876]ERROR from backend during send_query: 'Mотношение "tbclient" не существует'
[0.877]ERROR from backend during send_query: 'F.\src\backend\catalog\namespace.c'
[0.877]ERROR from backend during send_query: 'L273'
[0.878]ERROR from backend during send_query: 'RRangeVarGetRelid'
[0.878]STATEMENT ERROR: func=SC_execute, desc='(null)', errnum=7, errmsg='Error while executing the query'
[0.879] ------------------------------------------------------------
[0.880] hdbc=021E3C80, stmt=021E8C20, result=021EA5C0
[0.880] prepare=0, internal=0
[0.880] bindings=021E9008, bindings_allocated=19
[0.881] parameters=00000000, parameters_allocated=0
[0.881] statement_type=0, statement='select * from tbClient where 0 = 1'
[0.881] stmt_with_params='select * from tbClient where 0 = 1'
[0.882] data_at_exec=-1, current_exec_param=-1, put_data=0
[0.882] currTuple=-1, current_col=-1, lobj_fd=-1
[0.882] maxRows=0, rowset_size=1, keyset_size=0, cursor_type=0, scroll_concurrency=1
[0.883] cursor_name='SQL_CUR021E8C20'
[0.883] ----------------QResult Info -------------------------------
[0.883] fields=021E9598, backend_tuples=00000000, tupleField=0, conn=00000000
[0.884] fetch_count=0, num_total_rows=0, num_fields=0, cursor='(NULL)'
[0.884] message='ERROR: отношение "tbclient" не существует', command='(NULL)', notice='(NULL)'
[0.885] status=7, inTuples=0
[0.885]CONN ERROR: func=SC_execute, desc='(null)', errnum=110, errmsg='ERROR: отношение "tbclient" не существует'
[0.886] ------------------------------------------------------------
[0.886] henv=021E3C50, conn=021E3C80, status=1, num_stmts=16
[0.886] sock=021E20B0, stmts=021E2180, lobj_type=-999
[0.887] ---------------- Socket Info -------------------------------
[0.887] socket=560, reverse=0, errornumber=0, errormsg='(NULL)'
[0.887] buffer_in=35547096, buffer_out=35551200
[0.888] buffer_filled_in=6, buffer_filled_out=0, buffer_read_in=6
[8.195]conn=021E3C80, PGAPI_Disconnect

Спасибо

Изображение ostwolf

Спасибо кажется разобрался... наверное все дело в схеме. Как я понимаю надо создать схему с именем Пользователя...

Может немного

Может немного не в тему, но я через ODBC работал с PostgreSQL через DBquery в Excel на ура.
Ещё через ODBC писал в своё время на Delphi - тоже всё было замечательно.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков

Всё, нашел

Изображение ostwolf

Всё, нашел проблему... =)
Оказывается все дело в регистре.
По умолчанию конструктор VFP обращается к примеру так: autobizness.tb_client
Хотя название таблицы на сервере: tb_Client
Привел все названия на сервере к нижнему регистру и все заработало...
Пока вроде победил... копаем дальше =)

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023