|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Добрый день всем! Я создал таблицу, в ней есть поле 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 ***". В чём дело? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:32 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, триггер BEFORE INSERT? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:36 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
ДжекВ чём дело? Код триггера (полностью DDL)? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:37 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
вот триггер: 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:42 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, значит посылаешь id не null. Запрос на Insert в студию. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:45 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
KreatorXXI Запрос на Insert в студию. Какой запрос? Я первичный ключ не могу создать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:47 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
ДжекKreatorXXI Запрос на Insert в студию. Какой запрос? Я первичный ключ не могу создать. А в таблице уже есть значения? А если сделать select * from table where id is null ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:57 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, значит в этой таблице уже есть данные. Причём в id где-то присутствует null ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 10:57 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов Денис значит в этой таблице уже есть данные. Причём в id где-то присутствует null Сначала были данные, но без null (легко проверить - их мало) - не получалось. Очистил таблицу - результат тот же. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:04 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, Запутал всех. Причём здесь тогда триггер? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:06 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, DDL таблицы в студию и скрипт создания первичного ключа тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:09 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
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 таблице ещё создание генератора записалось? Может из-за этого... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:14 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, скрипт ПК где? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:21 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
ALTER TABLE MAPPING_TMP ADD CONSTRAINT PK_MAPPING_TMP PRIMARY KEY (ID); ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:23 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:26 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Очевидно, вам сначала надо создать домен P_KEY... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 11:30 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
GallemarЧто я не так делаю? Кодировка подключения правильная? И по идее, это должна быть новая тема? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 12:00 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
GallemarЧто я не так делаю? Позволяешь серверу собрать мусор в таблице перед созданием ключа. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 12:12 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Сейчас сделал таблицу с первичным ключом из скрипта - получилось. Раньше таблица была создана автоматически, при импорте данных. Вопрос снимается. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 12:37 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
fraksКодировка подключения правильная? И по идее, это должна быть новая тема? Это random. Вопрос к ТС - почему у меня работает, а у него нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 13:36 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
GallemarВопрос к ТС - почему у меня работает, а у него нет.Все тебе разжевать надо? ПК-ФК стоят над транзакциями, судя по всему есть незакрытые коннекты, которые заинтересованы в старых версиях записей, которые (версии, уже удаленные/исправленные данные) не дают создаться ключу. Не просто так рекомендация есть: изменяй метаданные монопольно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 13:54 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyGallemarВопрос к ТС - почему у меня работает, а у него нет.Все тебе разжевать надо? Вопрос риторический :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2017, 16:08 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, Я обычно деляю так (для любой таблицы): 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:32 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Кошмар. А уж в конкурентной среде будет "аццкий адъ". Если тебе надо застолбить несколько id-ов, так и скажи генератору gen_id(генератор, требуемое_кол_во). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:45 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Добрый день всем! Сейчас просто не могу создать первичный ключ для таблицы. Выдаётся та же ошибка: 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 ***". Непонятно что и куда он пытается вставить? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 09:03 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Не смотри на insert, смотри на нуллы Джекcolumn definition includes validation constraints. validation error for column ID, value "*** null ***". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 09:29 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
hvladНе смотри на insert, смотри на нуллы Куда смотреть? Вот так столбец определён в структцре таблицы: ID P_KEY NOT NULL /* P_KEY = INTEGER NOT NULL */ . Таблица пустая. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 09:39 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
ДжекТаблица пустая.Значит не пустая. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 09:47 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
hvlad Значит не пустая. IBExpert показывает 0 записей. Кроме этого я делал Empty table, потом Commit Transaction, переконнетивался... Ничего не помогло. По-моему, тут явно какой-то глюк файербёрда. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 09:54 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
...запрос: select count(*) from MyTable тоже выдаёт 0 записей... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 09:56 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, может быть, вот только ни у кого кроме тебя он не воспроизводится. И сценарий для того чтобы его воспроизвести ты предоставить не можешь. Статистику по таблице в студию. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:01 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов ДенисСтатистику по таблице в студию. А где её посмотреть? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:15 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, есть такой инструмент gstat Или в IBExpert щёлкаем правой по нужной таблице и в контекстном меню "Получить статистику для выделенных таблиц". У меня есть подозрения что для таблицы просто не собран мусор, потому что к БД есть ещё коннекты с незавершёнными транзакциями. Ну и если там всё норм можно попробовать онлайн валидацию выполнить. Мало ли БД битая ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:21 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Вот: 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:27 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов ДенисУ меня есть подозрения что для таблицы просто не собран мусор, потому что к БД есть ещё коннекты с незавершёнными транзакциями Действительно может быть это самое, потому что я щас на локальной копии попробовал создать первичный ключ дак всё нормально сработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:30 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, повтори сбор статистики с галочкой "Analyze average record and version length" а то информации о версиях не видно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:31 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, тр-ция 15300463 активна уже х\з сколько времени. Найди её и её коннект в мониторинге, скажи спасибо владельцу коннекта и выгони его из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:33 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, попробуй отключить всех пользователей, а лучше перезапусти сервер. Есть такая хрень, FB не даёт сделать первичный ключ. То ли FB держит какой-то кэш? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:35 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
KreatorXXI, Какой ещё кэш? Русским по-белому написали, что существуют версии, невидимые Джеку, которые старая транзакция держит. Нет, надо какие-то кэши выдумывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:39 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
KreatorXXI, это не хрень, а нормальное поведение. Очевидно что эта чудесная таблица раньше была не пуста, и там была запись с ID = null. Потом ТС почистил таблицу через DELETE FROM MyTable, но явно не учёл что другие коннекты имеют незавершённую транзакцию которая читает эту таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:40 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов Денисповтори сбор статистики с галочкой "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 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:42 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Джек, ну вот диагноз полностью подтвердился. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:43 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
hvladтр-ция 15300463 активна уже х\з сколько времени. Найди её и её коннект в мониторинге, скажи спасибо владельцу коннекта и выгони его из БД. Зашёл Services->Database Monitoring->Transactions, отфильтровал 15300463 и нажал вверху Shutdown attachment. Из списка она исчезла, но ключ всё равно не создаётся... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:47 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов Денис ну вот диагноз полностью подтвердился. Можете пояснить? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:48 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
ДжекСимонов Денис ну вот диагноз полностью подтвердился. Можете пояснить? total records: 41 total versions: 41, max versions: 1 говорит о том что есть заинтересованные версии. Там твой null и закопался. Грохай коннект который держит версии. А лучше все коннекты. Очевидно что с управлением транзакциями в приложении мягко говоря не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 10:54 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
А может такое быть - коннектов уже нет, а незавершённые транзакции всё ещё есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 11:06 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов ДенисГрохай коннект который держит версии. А лучше все коннекты Спасибо. Получилось. Удалил вот это всё: ... Oldest transaction 15300462 Oldest active 15300463 Oldest snapshot 15300463 Next transaction 15368752 ... которое нашлось и получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 11:10 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов Денисэто не хрень, а нормальное поведение.Это старый баг, ещё от IB http://tracker.firebirdsql.org/browse/CORE-405 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 11:50 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 12:06 |
|
Не создаётся первичный ключ
|
|||
---|---|---|---|
#18+
Симонов Денистикет вроде про коннект с отключенной сборкой мусора.Отключенная, заблокированная - называй как хочешь, эффект одинаковый :) автор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.Это ошибочное предположение ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2018, 13:32 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561140]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
57ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 184ms |
0 / 0 |