Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124
В Firebird 3 в главной таблице ChartAcc, для ключевого поля и других полей домен типа char(8) поменял на домен типа varchar(15) и снова создал бд из sql-скрипта:
CREATE TABLE CHARTACC (
    ACCNTNUM       VAR15 NOT NULL   /* VAR15 = VARCHAR(15) */,
    ACCPARNT       VAR15                   /* VAR15 = VARCHAR(15) */,
    ACCCOUNT       INT32D0               /*INT32D0 = INTEGER DEFAULT 0 */,
    ACCORDER       INT32D0               /*INT32D0 = INTEGER DEFAULT 0 */,
    ACCBALNS        VAR15                  /* VAR15 = VARCHAR(15) */,
    ACCBLCNT        INT32D0               /*INT32D0 = INTEGER DEFAULT 0 */,
    ACCBLORD        INT32D0              /* INT32D0 = INTEGER DEFAULT 0 */,
    ACCPROFT        VAR15                  /* VAR15 = VARCHAR(15) */,
    ACCPFCNT        INT32D0               /* INT32D0 = INTEGER DEFAULT 0 */,
    ACCPFORD        INT32D0              /* INT32D0 = INTEGER DEFAULT 0 */,
    ACCTITLE         DTITLE                /*DTITLE = VARCHAR(170) */,
    ACDESCRP        DNOTES              /* DNOTES = VARCHAR(8000) */,
    DTCREATE         DSTAMP               /* DSTAMP = TIMESTAMP  */,
    USRCREATE       DMID0              /* MID0 = SMALLINT DEFAULT 0 */,
    USRBLACK         CHAR(1) DEFAULT 'B',
    USRWHITE         CHAR(1) DEFAULT 'W',
    USER_MODIFIED  DTSTAMP         /* TSTAMP = TIMESTAMP  */,
    USER_MODIFIER  DMID0             /* MID0 = SMALLINT DEFAULT 0 */
);


В IBExpert запрос правильно выполняется а в Delphi выводит ошибку:
[FireDac][DatS]-32. EFDException with message Variable length column[ACCPARNT] overflow. Value length-[32], column maximum length-[15]

В таблице есть старые данные максимальной длиной 8 символ хотя новые, длинные тоже нормально добавляю.
Пробовал в новом проекте, но без результата.
29 дек 18, 06:00    [21776169]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
bastibubu,

Илюстрирующего проблему кода ты не привел, поэтому не понятно, что там происходит,
что именно за компонент, таблица или Query, кладешь ты туда или берешь, есть ли параметры,
какой длины, есть ли статически добавленные колонки, какой длины, и т.д. и т.п.
К тому же, почему с этим сюда, а не в Delphi? Ошибка то, совершенно очевидно, не серверная.

Модератор: Тема перенесена из форума "Firebird, InterBase".
29 дек 18, 08:23    [21776188]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3984
bastibubu,

надо открыть dataset, из которого добавляются данные в базу и там удалить и снова добавить новое поле, чтобы оно создалось с корректной длиной в делфи.

Так же косяк может быть в разных кодировках. Например, в базе это WIN1251, а в делфи юникод/утф выставлено в компонентах -- тогда размер обрезается в два раза при сохранении (1 символ из делфи будет хранится как "2 символа" в базе):

К сообщению приложен файл. Размер - 18Kb
29 дек 18, 13:26    [21776366]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124
Vlad F
bastibubu,

Илюстрирующего проблему кода ты не привел, поэтому не понятно, что там происходит,
что именно за компонент, таблица или Query, кладешь ты туда или берешь, есть ли параметры,
какой длины, есть ли статически добавленные колонки, какой длины, и т.д. и т.п.
К тому же, почему с этим сюда, а не в Delphi?


Vlad F компонент fdQuery. Ошибку выдает на любой запрос, например,
Select * from chartacc


датасеты пустые, запрос динамически создаю.
29 дек 18, 14:16    [21776419]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47534

Похоже, раньше поле у тебя было в UTF-8, а теперь в какой-то однобайтовой кодировке.
Почему огнептица разрешила тебе такое изменение типа - очень интересный вопрос.

Posted via ActualForum NNTP Server 1.5

29 дек 18, 14:26    [21776431]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124
Dimitry Sibiryakov
Похоже, раньше поле у тебя было в UTF-8, а теперь в какой-то однобайтовой кодировке.
Почему огнептица разрешила тебе такое изменение типа - очень интересный вопрос.


Dimitry Sibiryakov, FB не разрешил и генерировал sql-скрипт и скриптом создал новую базу(metadata+старые данные). В подчиненных таблицах тоже везде поменял домен.

Был домен:
CREATE DOMAIN CRDB AS
CHAR(8) CHARACTER SET UTF8
COLLATE UTF8;


а сейчас:

CREATE DOMAIN VAR15 AS
VARCHAR(15) CHARACTER SET UTF8
COLLATE UTF8;


COMMENT ON DOMAIN VAR15 IS 
'          VARCHAR(15) CHARACTER SET UTF8
COLLATE UTF8';


К сообщению приложен файл. Размер - 72Kb
29 дек 18, 15:01    [21776458]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124


К сообщению приложен файл. Размер - 17Kb
29 дек 18, 15:38    [21776488]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
bastibubu
Vlad F компонент fdQuery. Ошибку выдает на любой запрос, например,
Select * from chartacc

датасеты пустые, запрос динамически создаю.

Если IBExpert, с твоих слов, после модификации структуры таблицы выбирает данные из нее
нормально, а FDQuery дает ошибку, считаю, что надо не ждать дальше у моря погоды, а
переадресовать вопрос в соседнюю ветку по FireDAC главному бракоделу.))
29 дек 18, 20:03    [21776616]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124
Vlad F
Если IBExpert, с твоих слов, после модификации структуры таблицы выбирает данные из нее
нормально, а FDQuery дает ошибку, считаю, что надо не ждать дальше у моря погоды, а
переадресовать вопрос в соседнюю ветку по FireDAC главному бракоделу.))


Нашел ошибку!
После модификации структуры ACCPARNT и ACCBALNS с '.' изменился на '.'+пробелы после него:
INSERT INTO CHARTACC (ACCNTNUM, ACCPARNT, ACCCOUNT, ACCORDER, ACCBALNS, ACCBLCNT, ACCBLORD, ACCPROFT,
ACCPFCNT, ACCPFORD, ACCTITLE, ACDESCRP, DTCREATE, USRCREATE, USRBLACK, USRWHITE, USER_MODIFIED, USER_MODIFIER)
 VALUES ('.', '.                           ', 12, -10, '.', 717, -10, '.', 791, -10, 'главная ветвь', '', '2014-12-05 18:43:23', 55, 'B   ', 'W   ', '2018-12-29 01:29:42', 55);
29 дек 18, 21:02    [21776655]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
bastibubu,

Сам, по волшебству чтоли, изменился? Так не бывает.
29 дек 18, 21:11    [21776660]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124
Vlad F
bastibubu,

Сам, по волшебству чтоли, изменился? Так не бывает.

Не могу сказать. Посчитал, ровно 31 пробелов добавилось, плюс '.' получается 32.
29 дек 18, 21:20    [21776663]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
bastibubu,

Где добавилось? В коде добавилось? В данных? САМО?
Напоминает анекдот про Ржевского, где "он вам еще и в штаны наложил".
29 дек 18, 21:29    [21776667]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3984
bastibubu
Vlad F
bastibubu,

Сам, по волшебству чтоли, изменился? Так не бывает.

Не могу сказать. Посчитал, ровно 31 пробелов добавилось, плюс '.' получается 32.

В старой базе стоял тип char(32) какой-нибудь перед экспортом -- отсюда и пробелы до недостающей длины.
29 дек 18, 21:31    [21776668]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
JaDi,

Смотри внимательнЕе. Аффтар на голубом глазу топит за то, что удоиннял с восьми
до пятнадцати, а не укорачивал с тридцати двух.)))
29 дек 18, 21:40    [21776670]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 47534

Vlad F
Аффтар на голубом глазу топит за то, что удоиннял с восьми

В каких-то старых версиях CHAR добивался пробелами до объявленной длины в байтах, а не
символах. То есть CHAR(8) UTF-8 это 32 пробела.

Posted via ActualForum NNTP Server 1.5

29 дек 18, 21:53    [21776674]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
Dimitry Sibiryakov,

Во всех добивается. Но с каких пор char(8), пусть даже utf8, это 32 пробела, этого моя пока непонимай.))
29 дек 18, 22:15    [21776680]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
Dimitry Sibiryakov,

А, стоп, я пропустил про "в байтах". Но тогда осталось выяснить у аффтара, где он ее достал.))
29 дек 18, 22:17    [21776682]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124
Иногда работаю в Firebird Maestro Profesiional Portable v.17.1.0.1 (март 2017года), иногда в IBExpert. Может быть в этом причина.
29 дек 18, 22:38    [21776688]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
bastibubu,

Т.е. кто-то ИЗ НИХ в штаны тебе наделал? Очень даже может быть.))
29 дек 18, 22:43    [21776693]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
bastibubu
Member

Откуда:
Сообщений: 124
Vlad F
bastibubu,

Т.е. кто-то ИЗ НИХ в штаны тебе наделал? Очень даже может быть.))


Парень, потише!
29 дек 18, 22:57    [21776697]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
bastibubu,

Виноват, но дело все в том, что DS пытался намекнуть на возможные дефекты сервера,
а не клиентских утилит. Однако походу тема себя действительно исчерпала.))
29 дек 18, 23:07    [21776701]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9727
Бракодел может спать спокойно ?
30 дек 18, 00:07    [21776729]     Ответить | Цитировать Сообщить модератору
 Re: Variable length column[xxx] overflow. Value length-[32], column maximum length-[15]  [new]
Vlad F
Member

Откуда:
Сообщений: 807
Dmitry Arefiev,

Пока, стало быть, спокойно. Хотя, на мой взгляд, дело в данном конкретном случае осталось достаточно темным.
30 дек 18, 13:07    [21776852]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить