Страница 1 из 1

conversion error from string "BLOB"

Добавлено: 31 мар 2008, 13:53
kmi
Создаю таблицу в 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 все работает...

Re: conversion error from string "BLOB"

Добавлено: 31 мар 2008, 14:01
stix-s
kmi писал(а):
Создаю таблицу в IB 6.5:
В чем проблема? В Firebird 1.5 все работает...
Ну, с блобами вообще-то ч/з потоки работают, следовало бы воспользоваться поиском
а по поводу различий IB 6.5 - Firebird 1.5 явно отправят читать резизноты по требуемым серверам.

Добавлено: 31 мар 2008, 14:15
kdv
В чем проблема?
относительно InterBase: присваивать блобу строку можно только в IB 2007, если не ошибаюсь.
В 6.5 такой экзотики и не намечалось.

Добавлено: 31 мар 2008, 14:41
kmi
Спасибо

Добавлено: 01 апр 2008, 10:53
kmi
Проблема не решается.
Даже если разрешаю BLOB-полю иметь пустое значение и пишу запрос

Код: Выделить всё

INSERT
  INTO SCR_USER (
    ID,
    NAME
  )
  VALUES (
    1,
    'admin'
  );


получаю ту же ошибку. При чем тут строка "BLOB", вообще не ясно. По идее, запрос должен привести к созданию записи с пустым значением BLOB-поля.

Добавлено: 01 апр 2008, 11:59
kdv
попробуй 2-го апреля. может триггер какой найдешь, или в IBSQLMonitor посмотришь...

Добавлено: 01 апр 2008, 12:10
kmi
kdv писал(а):попробуй 2-го апреля. может триггер какой найдешь, или в IBSQLMonitor посмотришь...
Очень смешно... Триггеров нет. Монитор возвращает уже названную ошибку при выполнении запроса.

Добавлено: 01 апр 2008, 12:41
WildSery
Из чего выполняешь запрос?
Монитор показывает именно такой запрос к серверу?

Добавлено: 01 апр 2008, 13:49
kmi
Да, монитор повторяет запрос.
Пробовал выполнять сначала из своего приложения (через ADO с использованием ODBC-драйвера от Phoenix), потом из SQL-редактора в IBExpert. Результат один и тот же.
Но если в IBExpert добавить запись прямо в таблицу, используя форму, то запись добавляется корректно. Хотя в мониторе, естественно, отображается полсотни внутренних операций с системными объектами.

Добавлено: 01 апр 2008, 14:49
WildSery
А если убрать NOT NULL с блоб-поля?

Добавлено: 01 апр 2008, 14:54
kmi
Снял (см. выше) и даже сделал запрос без указания BLOB-поля - разницы никакой :(

Добавлено: 01 апр 2008, 17:10
kdv
Снял (см. выше) и даже сделал запрос без указания BLOB-поля - разницы никакой
см. выше про совет попробовать 2-го апреля.
из своего приложения (через ADO с использованием ODBC-драйвера от Phoenix)
если ADO - требование задачи, то еще туда-сюда. А так вообще к IB через ADO, ODBC, и т.д... слишком кривой путь.

Добавлено: 01 апр 2008, 17:38
kmi
Согласен, что кривой. Но увы.

На самом деле, оказалось, что IB 6.5 реагирует на NOT NULL в BLOB-полях не только таблицы, куда ведется запись, но и в зависимых таблицах. Как только удалил NOT NULL во всех BLOB-полях других таблиц - заработали вставка и обновление через стримы.

Добавлено: 01 апр 2008, 18:35
Merlin
А триггеров по-прежнему нет...

Добавлено: 02 апр 2008, 10:45
kdv
А триггеров по-прежнему нет...
да и msg файл похоже не той системы, как и клиентская часть.

иначе как объяснить что
оказалось, что IB 6.5 реагирует на NOT NULL в BLOB-полях не только таблицы, куда ведется запись, но и в зависимых таблицах.
простите, но это чушь какая-то.

Добавлено: 02 апр 2008, 11:32
WildSery
kdv писал(а):простите, но это чушь какая-то.
Это не чушь, это как раз триггеры ;)