Форум: "Базы";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
ВнизЗаполнение БД(FireBird 1.5) Найти похожие ветки
← →
Hell's Angel © (2006-08-14 02:09) [0]Возникла следующая проблема:
При заполнении базы данных с помощью IBQuery (SQL запрос Insert) при занесении 3770-ой записи возникает ошибка:
EIBInterBaseError with message "arithmetic exception,numeric overflow, or string truncation".
Что Вы можете посоветовать? Заранее спасибо.
← →
dwar © (2006-08-14 05:30) [1]Убрать из 3770-ой записи "arithmetic exception,numeric overflow, or string truncation" и все
← →
Dok (2006-08-14 10:14) [2]Вставляешь строку которая больше, или не в той кодировке
← →
Anatoly Podgoretsky © (2006-08-14 10:16) [3]Иследовать проблему по месту.
← →
Desdechado © (2006-08-14 11:13) [4]перевожу:
ошибка при арифметической операции, переполнение числа или строки
по-русски:
пытаешься запихать в поле значение, которое больше, чем тип поддерживает (например, 1000000 в SMALLINT или "123" в CHAR(1))
или кодировка не та
← →
Hell's Angel © (2006-08-14 19:07) [5]Тяжело согласиться с вашими замечаниями.
Строка занесенная в БД:
(Данные) (Тип)
Корпус ModeCom Debut 350W Black VarChar(250)
1 203,09 VarChar(20)
12 VarChar(10)
44.94 VarChar(10)
Строка на которой происходит ошибка:
Корпус ModeCom ENJOY USB, audio, fan
1 081,28
12
40.39
Принципиальной разницы между строками не вижу!
← →
Desdechado © (2006-08-14 19:21) [6]мож, пробельчики справа-слева?
← →
sniknik © (2006-08-14 20:23) [7]Hell"s Angel © (14.08.06 02:09)
> с помощью IBQuery (SQL запрос Insert)
один запрос чтоли составляеш на все записи?
Hell"s Angel © (14.08.06 19:07) [5]
строки для чисел? клево! в одном числе данных запятая разделитель в другом точка? фантастика! ... а работает при чтении данных наверное с переключением разделителя на середине записи, и обратно... чудно.
только не говори что здесь ошибся потому как это будет значить, что ты привел не реальные данные на которых возможно ошибка а сам их сдесь и придумал... (т.е. обманул) а просили скопировать.
и кстати для IB/FB вроде бы читал про "правило коротких транзакций" в смысле, если делать массовое внесение данных в одной транзакции то возможны проблемы. (тормоза точно, + насколько понимаю возможно переполнение внутреннего буфера/счетчиков/х.з. чего, точнее на сайте http://ibase.ru в доки) рекомендуют разбивать слишком массовое внесение на короткие транзакции (в цикл к примеру вставит пеодическое закрытие и сразу открытие)
p.s. пора по моему начинать банить за "партизанщину", типа, не привел исходных данных/как делает, ветку "к ногтю" как провокационную...
← →
Desdechado © (2006-08-15 11:17) [8]> если делать массовое внесение данных в одной транзакции, то возможны проблемы
Делал миллионами, проблемне было. Тормоза - да. Каждая следующая вставляется чуть дольше предыдущей (ориентировочно на 0.5-1%).
← →
Hell's Angel © (2006-08-15 12:10) [9]Нет, пример именно тот...И пусть Вас не смущают строки для чисел:) Пока что так надо.
Для чистоты эксперимента я сейчас вообще для каждой записи формирую SQL запрос и полный connect/disconnect БД.
← →
unknown © (2006-08-15 12:14) [10]
> Hell"s Angel © (15.08.06 12:10) [9]
Триггеров нет на вставку?
← →
Desdechado © (2006-08-15 12:29) [11]> я сейчас вообще для каждой записи формирую SQL запрос
А раньше что делал?
А вообще лучше параметрический препарированный запрос в цикле.
> я сейчас вообще для каждой записи полный connect/disconnect БД
бедный сервер...
← →
sniknik © (2006-08-15 12:53) [12]> И пусть Вас не смущают строки для чисел:)
меня не это "смущает", а практическая почти полная новозможность работы (нормальной естественно, а не просто отобразить, изменить) с базой в таком формате... то что в одной записи два типа разделителей вообще уникум, ... по глупости... такого просто не может быть (потому и предположил, что это просто опечатка при набивании здесь... а вторая запись сдесь же скопирована и немного поправлена...)
> А раньше что делал?
подозреваю, что общий запрос, формировал типа такого (пример, если конечно FB подобный синтаксис позволяет)INSERT INTO .... () SELECT значение 1, 2, 3, ...
UNION ALL
SELECT значение 1, 2, 3, ...
UNION ALL
SELECT значение 1, 2, 3, ...
....
но партизаны не колятся! умрут но как делают не покажут! вместо этого расплывчатые ничего не обьясняющие "обьяснения".
(что уже начинает немного раздражать...)
← →
Hell's Angel © (2006-08-15 21:07) [13]Запрос вида:
IBQuery1.SQL.Add("INSERT INTO sunrise_goods (name, price, warranty, category, id) VALUES ("""+strNameQuoted+""", """+strPrice+""", """+strWarranty+""", """+IntToStr(categoryID)+""", """+IntToStr(id)+""")");
← →
sniknik © (2006-08-16 07:56) [14]> Запрос вида:
вот именно так как показано, без параметров или QuotedStr?... ну тогда ищи апостроф в проблемной записи... и кстати не видно почему бы значениям не быть длиннее чем размерность типа... (ни trim ни какого другого обрезания не делается, а источник (чем бы гарантировался определенный размер) не показан)
p.s. нафик "партизан", не буду больше отвечать если посчитаю, что вопрос не "раскрыт" полностью. (а то получаются какие то уговоры, выпрашивание инфы которую они дозируют сжав зубы... вообще проблема у него, а решить ее как будто больше нужно нам. детский сад блин...)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c