Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 31 мар 2008, 13:53
Создаю таблицу в IB 6.5:
Код: Выделить всё
CREATE TABLE SCR_USER (
ID INTEGER NOT NULL,
NAME VARCHAR(32) NOT NULL,
PSWORD BLOB SUB_TYPE 1 SEGMENT SIZE 80 NOT NULL
);
Затем пытаюсь засунуть в нее данные:
Код: Выделить всё
INSERT
INTO SCR_USER (
ID,
NAME,
PSWORD
)
VALUES (
1,
'admin',
'21232F297A57A5A743894A0E4A801FC3'
);
Получаю неприятность:
Код: Выделить всё
Overflow occurred during data type conversion.
conversion error from string "BLOB".
В чем проблема? В Firebird 1.5 все работает...
-
stix-s
- Заслуженный разработчик
- Сообщения: 557
- Зарегистрирован: 13 дек 2005, 11:52
Сообщение
stix-s » 31 мар 2008, 14:01
kmi писал(а):
Создаю таблицу в IB 6.5:
В чем проблема? В Firebird 1.5 все работает...
Ну, с блобами вообще-то ч/з потоки работают, следовало бы воспользоваться поиском
а по поводу различий IB 6.5 - Firebird 1.5 явно отправят читать резизноты по требуемым серверам.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 31 мар 2008, 14:15
В чем проблема?
относительно InterBase: присваивать блобу строку можно только в IB 2007, если не ошибаюсь.
В 6.5 такой экзотики и не намечалось.
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 31 мар 2008, 14:41
Спасибо
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 01 апр 2008, 10:53
Проблема не решается.
Даже если разрешаю BLOB-полю иметь пустое значение и пишу запрос
Код: Выделить всё
INSERT
INTO SCR_USER (
ID,
NAME
)
VALUES (
1,
'admin'
);
получаю ту же ошибку. При чем тут строка "BLOB", вообще не ясно. По идее, запрос должен привести к созданию записи с пустым значением BLOB-поля.
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 01 апр 2008, 11:59
попробуй 2-го апреля. может триггер какой найдешь, или в IBSQLMonitor посмотришь...
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 01 апр 2008, 12:10
kdv писал(а):попробуй 2-го апреля. может триггер какой найдешь, или в IBSQLMonitor посмотришь...
Очень смешно... Триггеров нет. Монитор возвращает уже названную ошибку при выполнении запроса.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 01 апр 2008, 12:41
Из чего выполняешь запрос?
Монитор показывает именно такой запрос к серверу?
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 01 апр 2008, 13:49
Да, монитор повторяет запрос.
Пробовал выполнять сначала из своего приложения (через ADO с использованием ODBC-драйвера от Phoenix), потом из SQL-редактора в IBExpert. Результат один и тот же.
Но если в IBExpert добавить запись прямо в таблицу, используя форму, то запись добавляется корректно. Хотя в мониторе, естественно, отображается полсотни внутренних операций с системными объектами.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 01 апр 2008, 14:49
А если убрать NOT NULL с блоб-поля?
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 01 апр 2008, 14:54
Снял (см. выше) и даже сделал запрос без указания BLOB-поля - разницы никакой

-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 01 апр 2008, 17:10
Снял (см. выше) и даже сделал запрос без указания BLOB-поля - разницы никакой
см. выше про совет попробовать 2-го апреля.
из своего приложения (через ADO с использованием ODBC-драйвера от Phoenix)
если ADO - требование задачи, то еще туда-сюда. А так вообще к IB через ADO, ODBC, и т.д... слишком кривой путь.
-
kmi
- Сообщения: 30
- Зарегистрирован: 29 июн 2007, 13:23
Сообщение
kmi » 01 апр 2008, 17:38
Согласен, что кривой. Но увы.
На самом деле, оказалось, что IB 6.5 реагирует на NOT NULL в BLOB-полях не только таблицы, куда ведется запись, но и в зависимых таблицах. Как только удалил NOT NULL во всех BLOB-полях других таблиц - заработали вставка и обновление через стримы.
-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 01 апр 2008, 18:35
А триггеров по-прежнему нет...
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 02 апр 2008, 10:45
А триггеров по-прежнему нет...
да и msg файл похоже не той системы, как и клиентская часть.
иначе как объяснить что
оказалось, что IB 6.5 реагирует на NOT NULL в BLOB-полях не только таблицы, куда ведется запись, но и в зависимых таблицах.
простите, но это чушь какая-то.
-
WildSery
- Заслуженный разработчик
- Сообщения: 1738
- Зарегистрирован: 05 июн 2006, 16:19
Сообщение
WildSery » 02 апр 2008, 11:32
kdv писал(а):простите, но это чушь какая-то.
Это не чушь, это как раз триггеры
