|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
Может кто сталкивался? Сервер Fb 3.0.2 (проверялось и на 3.0.0). 64 бит. При добавлении поля в таблицу и последующем комите транзакции ошибка: авторThis operation is not defined for system tables. unsuccessful metadata update. unknown ISC error 335544989. Запрос: Код: plsql 1.
домен создан как: Код: plsql 1. 2. 3. 4.
На 2.5, на аналогичных базах, выполнение операции не приводит к ошибке. Лог на сервере не содержит никаких сообщений об ошибках. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 19:34 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
"Cannot make field VAL of table GD_CURRRATE NOT NULL because there are NULLs present" клиента обнови ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 19:40 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
dimitr, какое-то вуду (( 1. проверяю что поля нет 2. добавляю поле Код: plsql 1.
3. если сразу комитить транзакцию -- то будет ошибка, как описано выше. ок, транзакцию не трогаем, а пытаемся выполнить сразу же запрос: Код: plsql 1.
Получаем ошибку: авторColumn does not belong to referenced table. Dynamic SQL Error. SQL error code = -206. Column unknown. VAL. At line 1, column 24. 4. Пытаемся комитить транзакцию. Получаем ошибку: Код: plsql 1. 2. 3. 4.
5. Но! Сразу же после ошибки, в этой же транзакции, уже проходит указанный выше запрос: Код: plsql 1.
6. и вот теперь только мы можем закомитить транзакцию! Получается, пока транзакция не кинет ошибку, сервер не знает что у него в таблице уже есть такая колонка. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 20:21 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
проверка на нуллы (наличие записей в данном случае) выполняется при коммите. До него поля физически нет. На момент проверки - уже есть. Но это все артефакты реализации, на которые не надо закладываться. Поле на непустую таблицу надо добавлять либо nullable (потом апдейтить и превращать в NOT NULL), либо с заданным DEFAULT-ом. Все остальное ересь. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2017, 21:09 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
dimitr, 1. Это ломает существующую функциональность, так как ФБ до версии 3 работал по другому. Хорошо, когда есть под рукой исходники программы и время на исправление, а если нет? 2. DEFAULT значение здесь не выход. В данном случае поле не может быть НУЛЛ, но, если передан НУЛЛ или поле не указано в запросе INSERT, то действует триггер, который вычисляет и заполняет это поле соответствующим образом. Фактически, единственный путь сохранить действующую логику -- это расширить область допустимых значений домена, втиснув туда еще и значение для ПСЕВДО НУЛЛ (например, -1 в моем случае). Указать его для DEFAULT, и обрабатывать в триггере так, как будто это НУЛЛ. Это же бред -- вырезание гланд автогеном через ректальный проход. И это я могу сделать в одном частном случае, а у нас в базах таких полей может быть сотни и к ним сотни триггеров... И все это хозяйство может устанавливаться на любую БД уже в процессе ее работы, т.е. пустых таблиц там не будет. Кажется мелочь, а на самом деле огромная проблема. Я думаю не только у нас. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2017, 08:48 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
sysdba22, не мути воду. Добавление NOT NULLABLE поля в таблицу в которой есть данные переводит БД в неконсистентное состояние. До 3.0 этот оператор часто приводил к "невосстановимым" бекапам, если после этого не был выполнен нужный UPDATE. sysdba22Кажется мелочь, а на самом деле огромная проблема. Я думаю не только у нас. похоже только у вас, потому что другие прекрасно знают как решить эту "проблему". твоя проблема решается так Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2017, 09:17 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
sysdba22Это ломает существующую функциональность, так как ФБ до версии 3 работал по другому. он работал неправильно sysdba22Хорошо, когда есть под рукой исходники программы и время на исправление, а если нет? не надо мигрировать программы без исходников на новую версию СУБД sysdba22DEFAULT значение здесь не выход я предложил и другой вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2017, 09:34 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
dimitr, авторпотом апдейтить и превращать в NOT NULL а как, если у домена нельзя менять NOT NULL? https://firebirdsql.org/manual/nullguide-change-domain-nullability.html#d0e25188 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2017, 10:10 |
|
unknown ISC error 335544989 при добавлении поля в таблицу
|
|||
---|---|---|---|
#18+
sysdba22, ну ты чего ссылку то даёшь на документ 2007 года? В тройке можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2017, 10:14 |
|
|
start [/forum/topic.php?fid=40&msg=39396971&tid=1561729]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 142ms |
0 / 0 |