|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
Странная проблема, решение скорее всего простое, но я его не вижу. Каким образом в varchar(12) могла вставиться строка длиной в 17 символов? Server Version: WI-V2.5.3.26778 Firebird 2.5 Server Implementation: Firebird/x86-64/Windows NT Service Version: 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 00:00 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
UTF-8 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 00:08 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
Квази, Теоретизирую (потому что в конце будет все не так) ну например, сначала был varchar(20), вставили 17 символов, а потом через системные таблицы (или ИБЭксперт) урезали тип столбца до 12 символов. Хотя, по идее, в этом случае данные бы не показывались (ошибка про truncate). кстати, в rdb$formats у этой таблицы 3 формата. Похоже, что какой-то столбец добавляли и удаляли. Якобы у столбца предварительно была длина около varchar(50) (есть на это некоторые намеки). кроме того, в этой таблице столбец имеет field_position = 7. Внезапно? В этой базе в нынешний столбец действительно нельзя ввести больше 12 символов, причем даже цифр. 123456789012 прокатывает 1234567890123 - уже нет, truncation и еще. Сервер начинает ругаться на malformed string только если попытаться урезать эту строку меньше 8 символов select cast(building as varchar(8)) from address все ок select cast(building as varchar(7)) from address malformed string. если туда добавить строку из 12 цифр, при select cast(building as varchar(11)) from address ругается на truncation. обычные буквы (АБВ) добиваются до 12, после этого больше не дает ввести (truncation). А этот чудной Толеген Токтаров впилился хоть бы хны, и вводится сколько угодно раз :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 00:31 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, то есть, в строке "ТОЛЕГЕН ТОКТАРОВ" не все символы двухбайтовые? Замечу, что прямо в БД, на странице с этими данными, вот эти две записи занимают по 53 байта, а если создать еще одну запись с 12-ю цифрами, то ее длина - 34 байта. Толегена я еще раз ввел - на диске сохранилась абсолютно идентичная запись в 53 байта. С буквами АБВ... (12 букв) - 46 байт. (указываю размер записи, packed, не размер строки) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 00:37 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
kdvто есть, в строке "ТОЛЕГЕН ТОКТАРОВ" не все символы двухбайтовые? Все. Но utf-8 рассчитана на четырёхбайтовые. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 12:13 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, кто-то из нас что-то не понимает. сколько символов в "толеген токтаров"? сколько символов в "абвгдежзиклм", "123456789012" и в "1234567890123"? Почему "абв..." в 13 символов не проходит, "123.." в 13 символов не проходит, а "толеген..." - проходит? Чем символы "толеген.." отличаются от "абв.."? Даже если бы часть букв в "толеген" была однобайтовая, этот вариант ответа не прокатывает, потому что "123.." - однобайтовые однозначно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 12:26 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
kdvКвази, Теоретизирую (потому что в конце будет все не так) ну например, сначала был varchar(20), вставили 17 символов, а потом через системные таблицы (или ИБЭксперт) урезали тип столбца до 12 символов. Хотя, по идее, в этом случае данные бы не показывались (ошибка про truncate). кстати, в rdb$formats у этой таблицы 3 формата. Похоже, что какой-то столбец добавляли и удаляли. Якобы у столбца предварительно была длина около varchar(50) (есть на это некоторые намеки). кроме того, в этой таблице столбец имеет field_position = 7. Внезапно? Данная база - фрагмент рабочей. Из нее удалил все, кроме таблицы. Из этой таблицы тоже удалил все поля кроме проблемного. Размер поля не менялся (по крайней мере в обозримом времени), данная запись была внесена несколько дней назад. Записи импортируются из Excel утилитой (delphi XE+FIBC). Насколько знаю в утилите простые insert into... "Вот и все, что я хотел сказать о войне во Вьетнаме" ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 19:31 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
Проблема с теми строками, которые имеют больше 12 символов и ровно 31 байт в представлении. Спрошу Адриано, есть там одно место... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 21:08 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
hvlad, типа, "магическая дыра" в проверке превышения длины строки? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 22:08 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
Чпок-с . А пофиксено только в 3.0. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 22:30 |
|
Как вставить в Varchar(n) строку длиной N+x?
|
|||
---|---|---|---|
#18+
Вано Сусанишвили, да, это оно. Требуй бекпорта в 2.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2015, 23:25 |
|
|
start [/forum/topic.php?fid=40&fpage=75&tid=1562794]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
30ms |
get forum data: |
7ms |
get page messages: |
44ms |
get tp. blocked users: |
5ms |
others: | 278ms |
total: | 429ms |
0 / 0 |