powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не создаётся первичный ключ
51 сообщений из 51, показаны все 3 страниц
Не создаётся первичный ключ
    #39475266
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!
Я создал таблицу, в ней есть поле ID(no null). Есть ещё триггер для автоинкремента:
if (new.id is null) then
new.id = gen_id(GEN_MAPPING_TMP_ID,1);
Но создать по полю ID первичный ключ не получается - выскакивает ошибка:
The insert failed because a column definition includes validation constraints.
validation error for column ID, value "*** null ***".
В чём дело?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475269
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек, триггер BEFORE INSERT?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475272
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжекВ чём дело?
Код триггера (полностью DDL)?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475276
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот триггер:
CREATE OR ALTER TRIGGER MAPPING_TMP_BI FOR MAPPING_TMP
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.id is null) then
new.id = gen_id(GEN_MAPPING_TMP_ID,1);
end
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475278
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

значит посылаешь id не null. Запрос на Insert в студию.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475279
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI Запрос на Insert в студию.
Какой запрос? Я первичный ключ не могу создать.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475282
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжекKreatorXXI Запрос на Insert в студию.
Какой запрос? Я первичный ключ не могу создать.
А в таблице уже есть значения? А если сделать select * from table where id is null ?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475283
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

значит в этой таблице уже есть данные. Причём в id где-то присутствует null
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475286
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис значит в этой таблице уже есть данные. Причём в id где-то присутствует null
Сначала были данные, но без null (легко проверить - их мало) - не получалось.
Очистил таблицу - результат тот же.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475288
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

Запутал всех. Причём здесь тогда триггер?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475289
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

DDL таблицы в студию и скрипт создания первичного ключа тоже
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475296
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE GENERATOR GEN_MAPPING_TMP_ID;

CREATE TABLE MAPPING_TMP (
NAME VARCHAR(63),
SHEET VARCHAR(34),
NAME5P VARCHAR(67),
SHEET5P VARCHAR(36),
ID P_KEY NOT NULL /* P_KEY = INTEGER NOT NULL */
);

Почему-то в ddl таблице ещё создание генератора записалось? Может из-за этого...
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475308
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек, скрипт ПК где?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475312
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALTER TABLE MAPPING_TMP ADD CONSTRAINT PK_MAPPING_TMP PRIMARY KEY (ID);
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475316
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
This operation is not defined for system tables.
Dynamic SQL Error.
SQL error code = -607.
Invalid command.
Specified domain or source column P_KEY does not exist.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475322
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очевидно, вам сначала надо создать домен P_KEY...
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475348
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Что я не так делаю?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475359
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЧто я не так делаю?

Кодировка подключения правильная?
И по идее, это должна быть новая тема?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475365
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЧто я не так делаю?

Позволяешь серверу собрать мусор в таблице перед созданием ключа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475385
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас сделал таблицу с первичным ключом из скрипта - получилось.
Раньше таблица была создана автоматически, при импорте данных.
Вопрос снимается.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475446
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksКодировка подключения правильная?
И по идее, это должна быть новая тема?
Это random. Вопрос к ТС - почему у меня работает, а у него нет.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475462
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarВопрос к ТС - почему у меня работает, а у него нет.Все тебе разжевать надо? ПК-ФК стоят над транзакциями, судя по всему есть незакрытые коннекты, которые заинтересованы в старых версиях записей, которые (версии, уже удаленные/исправленные данные) не дают создаться ключу. Не просто так рекомендация есть: изменяй метаданные монопольно.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39475611
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyGallemarВопрос к ТС - почему у меня работает, а у него нет.Все тебе разжевать надо?
Вопрос риторический :)
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39476341
Фотография alex_p_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

Я обычно деляю так (для любой таблицы):

CREATE GENERATOR MyTable_GEN_ID;

CREATE OR ALTER TRIGGER MyTable_BI0 FOR MyTable
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable CurrentCode integer;
begin
if ((NEW.MyTable_ID is NULL) or (NEW.MyTable_ID<=0)) then
NEW.MyTable_ID = GEN_ID(MyTable_GEN_ID,1);
else begin
CurrentCode = GEN_ID(MyTable_GEN_ID,0);
if (CurrentCode<NEW.MyTable_ID) then
CurrentCode = GEN_ID(MyTable_GEN_ID,NEW.MyTable_ID-CurrentCode);
end
end
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39476353
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кошмар. А уж в конкурентной среде будет "аццкий адъ".

Если тебе надо застолбить несколько id-ов, так и скажи генератору gen_id(генератор, требуемое_кол_во).
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635803
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем!
Сейчас просто не могу создать первичный ключ для таблицы.
Выдаётся та же ошибка:
The insert failed because a column definition includes validation constraints.
validation error for column ID, value "*** null ***".
Никаких триггеров нет.
Убрал все зависимости.
Убрал все вторичные ключи.
Запускаю скрипт:
ALTER TABLE MyTable ADD CONSTRAINT PK_LUN_EMPLOYEES_CHARGES PRIMARY KEY (ID);
Выдаётся ошибка:
The insert failed because a column definition includes validation constraints.
validation error for column ID, value "*** null ***".
Непонятно что и куда он пытается вставить?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635819
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не смотри на insert, смотри на нуллы
Джекcolumn definition includes validation constraints.
validation error for column ID, value "*** null ***".
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635824
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladНе смотри на insert, смотри на нуллы

Куда смотреть?
Вот так столбец определён в структцре таблицы:
ID P_KEY NOT NULL /* P_KEY = INTEGER NOT NULL */
.
Таблица пустая.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635831
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжекТаблица пустая.Значит не пустая.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635835
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad Значит не пустая.
IBExpert показывает 0 записей.
Кроме этого я делал Empty table, потом Commit Transaction, переконнетивался...
Ничего не помогло.
По-моему, тут явно какой-то глюк файербёрда.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635836
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...запрос:
select count(*) from MyTable
тоже выдаёт 0 записей...
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635840
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

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

Статистику по таблице в студию.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635854
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисСтатистику по таблице в студию.
А где её посмотреть?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635858
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

есть такой инструмент gstat
Или в IBExpert щёлкаем правой по нужной таблице и в контекстном меню "Получить статистику для выделенных таблиц".
У меня есть подозрения что для таблицы просто не собран мусор, потому что к БД есть ещё коннекты с незавершёнными транзакциями. Ну и если там всё норм можно попробовать онлайн валидацию выполнить. Мало ли БД битая
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635863
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот:


Database "/var/lib/firebird/2.5/data/MyDB.fdb"
Database header page information:
Flags 0
Checksum 12345
Generation 16645848
Page size 16384
ODS version 11.2
Oldest transaction 15300462
Oldest active 15300463
Oldest snapshot 15300463
Next transaction 15368620
Bumped transaction 1
Sequence number 0
Next attachment ID 1192359
Implementation ID 24
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Aug 28, 2016 15:30:47
Attributes force write

Variable header data:
Database backup GUID: {6269D5FE-2489-4EE3-0A8F-895A66CF12DB}
Sweep interval: 20000
*END*


Database file sequence:
File /var/lib/firebird/2.5/data/MyDB.fdb is the only file

Analyzing database pages ...
MYTABLE (197)
Primary pointer page: 591, Index root page: 592
Data pages: 1, data page slots: 1, average fill: 14%
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635865
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисУ меня есть подозрения что для таблицы просто не собран мусор, потому что к БД есть ещё коннекты с незавершёнными транзакциями
Действительно может быть это самое, потому что я щас на локальной копии попробовал создать первичный ключ дак всё нормально сработало.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635868
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

повтори сбор статистики с галочкой "Analyze average record and version length" а то информации о версиях не видно
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635871
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

тр-ция 15300463 активна уже х\з сколько времени.
Найди её и её коннект в мониторинге, скажи спасибо владельцу коннекта и выгони его из БД.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635872
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

попробуй отключить всех пользователей, а лучше перезапусти сервер. Есть такая хрень, FB не даёт сделать первичный ключ. То ли FB держит какой-то кэш?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635876
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

Какой ещё кэш?
Русским по-белому написали, что существуют версии, невидимые Джеку, которые старая транзакция держит.
Нет, надо какие-то кэши выдумывать.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635879
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KreatorXXI,

это не хрень, а нормальное поведение. Очевидно что эта чудесная таблица раньше была не пуста, и там была запись с ID = null. Потом ТС почистил таблицу через DELETE FROM MyTable, но явно не учёл что другие коннекты имеют незавершённую транзакцию которая читает эту таблицу.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635881
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисповтори сбор статистики с галочкой "Analyze average record and version length" а то информации о версиях не видно
Вот:
Database "/var/lib/firebird/2.5/data/teko.fdb"
Database header page information:
Flags 0
Checksum 12345
Generation 16645997
Page size 16384
ODS version 11.2
Oldest transaction 15300462
Oldest active 15300463
Oldest snapshot 15300463
Next transaction 15368752
Bumped transaction 1
Sequence number 0
Next attachment ID 1192374
Implementation ID 24
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Aug 28, 2016 15:30:47
Attributes force write

Variable header data:
Database backup GUID: {6269D5FE-2489-4EE3-0A8F-895A66CF12DB}
Sweep interval: 20000
*END*


Database file sequence:
File /var/lib/firebird/2.5/data/teko.fdb is the only file

Analyzing database pages ...
LUN_EMPLOYEES_CHARGES (197)
Primary pointer page: 591, Index root page: 592
Average record length: 0.00, total records: 41
Average version length: 20.73, total versions: 41, max versions: 1
Data pages: 1, data page slots: 1, average fill: 14%
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 0
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635882
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Джек,

ну вот диагноз полностью подтвердился.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635884
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladтр-ция 15300463 активна уже х\з сколько времени.
Найди её и её коннект в мониторинге, скажи спасибо владельцу коннекта и выгони его из БД.
Зашёл Services->Database Monitoring->Transactions, отфильтровал 15300463 и нажал вверху Shutdown attachment.
Из списка она исчезла, но ключ всё равно не создаётся...
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635885
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис ну вот диагноз полностью подтвердился.
Можете пояснить?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635889
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДжекСимонов Денис ну вот диагноз полностью подтвердился.
Можете пояснить?

total records: 41
total versions: 41, max versions: 1

говорит о том что есть заинтересованные версии. Там твой null и закопался. Грохай коннект который держит версии. А лучше все коннекты. Очевидно что с управлением транзакциями в приложении мягко говоря не очень.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635895
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может такое быть - коннектов уже нет, а незавершённые транзакции всё ещё есть?
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635898
Джек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисГрохай коннект который держит версии. А лучше все коннекты
Спасибо. Получилось.
Удалил вот это всё:
...
Oldest transaction 15300462
Oldest active 15300463
Oldest snapshot 15300463
Next transaction 15368752
...
которое нашлось и получилось.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635933
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто не хрень, а нормальное поведение.Это старый баг, ещё от IB
http://tracker.firebirdsql.org/browse/CORE-405
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39635948
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

так тикет вроде про коннект с отключенной сборкой мусора.
Или там и другие случаи затронуты? В том числе и

авторSince indices work outside transaction control, it
may be a initial design/implementation pitfall. It
appears the index creation and partner lookup
code never touches records and hence is unable
to determine which versions are actual at the
moment of index creation.
...
Рейтинг: 0 / 0
Не создаётся первичный ключ
    #39636007
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денистикет вроде про коннект с отключенной сборкой мусора.Отключенная, заблокированная - называй как хочешь, эффект одинаковый :)

авторIt
appears the index creation and partner lookup
code never touches records and hence is unable
to determine which versions are actual at the
moment of index creation.Это ошибочное предположение
...
Рейтинг: 0 / 0
51 сообщений из 51, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Не создаётся первичный ключ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]