Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
Собственно не могу понять, что я делаю не так PostgreSQL 8.1.5-6.1C для Linux ODBC драйвер версии 3.5.1 для Win К базе подключен, таблица _1SSYSTEM гарантированно существует, и владелец ее - postgres Делаю запрос SQLTablesW(Hstmt, NULL,0, "postgres", 8, "_1SSYSTEM", 9, "TABLE", 5) а в ответ на SQLFetch - тишина, код возврата 100 - данные не найдены. Что я делаю не так? Требуется разобраться именно с функциями ODBC драйвера, а не менять это дело на SQL запрос таблицы pg_tables Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 17:36 |
|
||
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
Судя по спеке: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. четвертый параметр это имя схемы, а не имя вледельца объекта. Попробуйте заменить "postgres" на "public" (если вы явно не указывали другую схему во время создания таблицы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 18:37 |
|
||
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
Не, на "public" тоже не находит таблицу, я пробовал. И если залезть поглубже в исходники ODBC драйвера постгресса, то можно увидеть, что там внутри SQLTables вызывается PGAPI_Tables, которой параметр szSchemaName передается как cbTableOwner, что, конечно, странно :) Скажу то, что успел найти еще: Имя таблицы: _1SSYSTEM - так оно создавалось На запросы выдает следующее: SELECT * FROM pg_tables WHERE tablename='_1SSYSTEM'; schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers ------------+-----------+------------+------------+------------+----------+------------- (записей: 0) А теперь, внимание: SELECT * FROM pg_tables WHERE tablename='_1ssystem' master-# ; schemaname | tablename | tableowner | tablespace | hasindexes | hasrules | hastriggers ------------+-----------+------------+------------+------------+----------+------------- public | _1ssystem | postgres | | f | f | f (1 запись) При этом: select * from _1SSYSTEM; curdate | curtime | eventidta | dbsign | dbsetuuid | snapshper | accdate | flags ---------+---------+-----------+--------+-----------+-----------+---------+------- (записей: 0) И: SELECT * FROM _1ssystem; curdate | curtime | eventidta | dbsign | dbsetuuid | snapshper | accdate | flags ---------+---------+-----------+--------+-----------+-----------+---------+------- (записей: 0) Видимо поэтому и через SQLTables не находится таблица. Создавалась она большими буквами, а ее существование выводится маленькими. Хелп ми :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 19:22 |
|
||
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
А помочь в чем? Zashibis SQLFetch - тишина, код возврата 100 - данные не найдены. SELECT * FROM pg_tables WHERE tablename='_1ssystem' (1 запись) SELECT * FROM _1ssystem; (записей: 0) У вас есть таблица, но в ней нет записей. Что здесь не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 19:52 |
|
||
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
Помочь в том, что не выполняется запрос SELECT * FROM pg_tables WHERE tablename='_1SSYSTEM'; Т.е. даже когда я создаю таблицу большими буквами, у постгресса она в системную таблицу pg_tables помещается в нижнем регистре. Ну и как бы да ладно. Но когда я запрашиваю у постгресса, существует ли таблица '_1SSYSTEM' - он говорит что нет, т.е. постгресс выполняет регистрозависимый поиск, и это делается как при SELECT * FROM pg_tables WHERE tablename='_1SSYSTEM' так и при выполнении функции SQLTables !!!, что в общем-то смотрится криво. Может у меня просто что-то не настроено? Сейчас я впаял в ODBC драйвер в SQLTables понижение регистра для имени таблицы, и все заработало. Но ведь это же не правильно так делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2007, 20:33 |
|
||
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
Почитал, ничего нового для себя пока не открыл, то что "Foo" не равно "FOO" - это я знаю. Вопрос ведь в другом, я создаю таблицу "_1SSYSTEM" Постгрес ее создает. Но после этого я делаю запрос через SQLTables на имя "_1SSYSTEM" и мне говорят, что такой таблицы не существует! Зато этот же запрос на имя "1ssystem" проходит на ура, и таблица находится. Это только у меня так или у всех? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 10:53 |
|
||
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
Zashibis Это только у меня так или у всех? :) Только у тебя :) Насколько я посмотрю тут народ предпочитает связку delphi + zeos. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 11:11 |
|
||
|
SQLTables
|
|||
|---|---|---|---|
|
#18+
Ну мне выбирать особо не приходится, есть 1С, есть ее запросы. 1С создает базу, и через некоторое время проверяет ее существование через ODBC функцию SQLTables, и менять исходники 1С у меня возможности нет. Сейчас я временно поместил в ODBC драйвер функцию, которая переводит имя таблиц в нижний регистр, и SQLTables проходит нормально, но это не есть правильно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2007, 11:56 |
|
||
|
|

start [/forum/topic.php?fid=53&gotonew=1&tid=2005286]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 347ms |

| 0 / 0 |
