|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.11.2007, 15:45 | #1 |
Пользователь
Регистрация: 30.10.2007
Сообщений: 20
|
Delphi и InterBase -2
Project Project1.exe raised exception class EIBInterBaseError with message 'violation of PRIMARY or UNIQUE KEY constraint "INTEG_2" on table "LOG"'. Process stopped. Use Step or Run to continue.
Подскажите что нужно поправить? Вот код: Код:
Последний раз редактировалось Alex21; 07.11.2007 в 10:53. Причина: заключайте код в специальные теги |
06.11.2007, 19:36 | #2 |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Опишите структуру таблицы которую вы пытаетесь редактировать и содержимое свойства SQL в IBQuery1.
Таблица должна обязательно содержать ключевое поле. Вы должны получить значение этого поля: К примеру есть таблица MyTable. Поля таблицы: MYTABLE_ID: BIGINT MYINTFIELD: INTEGER MYSTRINGFIELD: VARCHAR(20) В ней первое поле MyTable_ID: BIGINT - первичный ключ. Для генерации уникального значения, должен быть создан генератор (это такой счетчик или ещё называют последовтельность) GEN_MYTABLE_ID(к примеру. В IBExpert смотри раздел генераторы). Form1.IBQuery1.SQL - содержит следующий SQL запрос: Код:
которая генерит уникальное значение первичного ключа(Primary key) - IBDatabase1.GenID('Имя_Генератора_д ля_таблицы', IncValue); Здесь IncValue - значение на которое нужно увеличить уникальный счетчик, обычно 1. В вашем коде нигде нет заполнения ключевого поля уникальным значением. Второй вариант: Я не знаю содержимое вашей базы и SQL запросов, если уникальное значение первичного ключа у вас всё же генерится, например в триггере, то такая ошибка будет выпадать, если какое либо поле(не первичный ключ) имеет уникальный индекс, такой индекс не разрешит добавить в таблицу записи с одинаковыми значениями по этому полю. Проверте, нет ли в вашей таблице уникальных индексов, кроме первичного ключа... В вашем примере совершенно ясно одно, поле INTEG_2 имеет уникальный индекс, возможно это первичный ключ, вы автор вам виднее и в это поле вы пытаетесь добавить значение, которое уже есть в в этом поле в предидущих записях.... В вашем коде INTEG_2 нигде не заполняется. Если это первичный ключ, то нужно добавить: Form1.IBQuery1.Params.ParamByName(' INTEG_2').Value := IBDatabase1.GenID('ИМЯ_ГЕНЕРАТОРА', 1); или сделать тоже самое в триггере перед вставкой(BEFORE INSERT). Последний раз редактировалось Alex21; 07.11.2007 в 10:53. Причина: заключайте код в специальные теги |
07.11.2007, 09:55 | #3 |
Пользователь
Регистрация: 30.10.2007
Сообщений: 20
|
Опять ошибка! только другая
Project Project1.exe raised exception class EIBInterBaseError with message 'arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets'. Process stopped. Use Step or Run to continue. Данные в таблицу записывались отлично... но через некоторое время вылетело это. |
07.11.2007, 09:56 | #4 | |
Пользователь
Регистрация: 30.10.2007
Сообщений: 20
|
Цитата:
|
|
07.11.2007, 12:28 | #5 | |
Форумчанин
Регистрация: 28.07.2007
Сообщений: 361
|
Цитата:
1. Проверьте кодировку текстовых полей вашей таблицы, там где кодировка полей с типом CHAR, VARCHAR не указана, поставте Win1251 и коллате Win1251(или другую, если вас интересует другая напрмер UTF8) и посмотрите, указывали ли вы кодировку по умолчанию при создании базы. 2. Некорректные данные, например вы пытаетесь в поле с типом INTEGER записать не целое число и т.д. Последний раз редактировалось Rik; 07.11.2007 в 12:31. |
|
07.11.2007, 14:51 | #6 | |
Пользователь
Регистрация: 30.10.2007
Сообщений: 20
|
Цитата:
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
interbase+delphi | KiSH333 | БД в Delphi | 3 | 15.08.2008 09:53 |
Си и InterBase | Edimus | Общие вопросы C/C++ | 2 | 23.11.2007 16:32 |
Delphi и InterBase | Edimus | БД в Delphi | 12 | 06.11.2007 14:18 |
Как из Delphi залезть в системный таблицы InterBase | Leee | БД в Delphi | 0 | 21.04.2007 21:04 |
InterBase 6.5 | san4es | БД в Delphi | 0 | 12.12.2006 20:03 |