Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.038 c
3-1155684494
DimonS
2006-08-16 03:28
2006.10.15
Сбой в Access.


10-1124054722
Lotus
2005-08-15 01:25
2006.10.15
The server threw an exception


4-1148964758
Шмель
2006-05-30 08:52
2006.10.15
Сохранение позиции окна


2-1159276169
Asdpro
2006-09-26 17:09
2006.10.15
Создание меню из дерева каталогов и файлов


2-1159277739
Inna_Z
2006-09-26 17:35
2006.10.15
События MouseDown и MouseUp.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский