conversion error from string "BLOB"

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

conversion error from string "BLOB"

Сообщение 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

Re: conversion error from string "BLOB"

Сообщение 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 писал(а):простите, но это чушь какая-то.
Это не чушь, это как раз триггеры ;)

Ответить