|
firebird batch script
|
|||
---|---|---|---|
#18+
Привет. Попробовал прогнать скрипт: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64.
вернуло автор. ERROR: unsuccessful metadata update cannot create index IDX_ICE_TEST_MASTER$ID [ErrorCode=335544351, ObjName=""] В БД нет ни таблиц, ни индексов. Более того, скрипт пару раз проганялся нормально. Что произошло? Firebird 3.0.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2017, 22:53 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
зеленый админ, читай langref про DDL. Для выполнения большинства операторов DDL требуется commit. Некоторые выполняются только в момент commit. Зачем тебе понадобилось так создавать таблицы? И зачем там ПК создается с using index? Тебя не устраивает имя индекса PK_%s$ID ? И вообще, зачем нужны "нумерованные" таблицы? Может, временные надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 06:48 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
kdv, у меня в посте только одна ошибка: firebird кидает ошибку во время commit. Остальное, по-моему несущественно ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 09:04 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Ему явно не нравится имя индекса "IDX_ICE_TEST_MASTER$ID" А вообще с какой целью Вы вмешиваетесь и пытаетесь давать свои имена индексам. Тем более для primary key. Зачем это надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 09:42 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Какой-то непонятный метод решения непонятной проблемы. Ты бы по-русски написал чего ты таки хочешь в итоге? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 09:44 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Антон КарасёвЕму явно не нравится имя индекса "IDX_ICE_TEST_MASTER$ID" А вообще с какой целью Вы вмешиваетесь и пытаетесь давать свои имена индексам. Тем более для primary key. Зачем это надо?Пример 5.29 Руководства по языку SQL СУБД Firebird 2.5 от 6 сентября 2015 г.: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 10:07 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
rdb_dev, ты это к чему? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 10:09 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Симонов Денис, по моему, контекст вопроса и ответа очевиден. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 10:12 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Вот направление, дальше - копать самостоятельно. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 10:16 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
зеленый админ, а зачем после каждого оператора точка с запятой стоит если он всё равно в ES выполняется? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 10:16 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Сорри опять же. Не выложил код зависимых процедур. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
прогнал код (выше + 1-ый пост) на новой БД - все работает. На старой - виснет коммит. Проверю потом еще провисшие транзакции. Отпишусь вечером. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 12:29 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
зеленый админпрогнал код (выше + 1-ый пост) на новой БД - все работает. На старой - виснет коммит. Проверю потом еще провисшие транзакции. Отпишусь вечером. а если указать параметры транзакции для скрипта: isc_tpb_consistency isc_tpb_write ась? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 12:31 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
зеленый админ, не пудри мозги, ответь на мои вопросы 20412997 . Гланды через зад тоже иногда удобно вырезать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 19:33 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
1) kdvчитай langref про DDL. Для выполнения большинства операторов DDL требуется commit. Некоторые выполняются только в момент commit. Знаю, написал выше. 2) kdvЗачем тебе понадобилось так создавать таблицы? И зачем там ПК создается с using index? Тебя не устраивает имя индекса PK_%s$ID ? И вообще, зачем нужны "нумерованные" таблицы? Может, временные надо? Мне так хочется. А что хочется и не запрещено - разрешено. Я их буду создавать и сносить 100500 раз. GTT - знаком, работал в другой СУБД. Меня пока интересуют регулярные. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 20:15 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
ни открытых транзакций, ничего там нет подозрительного. Просто не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 20:39 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Если кому интересно - вот ссылка на бд: https://drive.google.com/file/d/0B4mLkzBXmYycNkgwNjB0VWIzN0E/view?usp=sharing Хз что там не так. Напишите, если есть какие соображения ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 20:53 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
зеленый админМне так хочется. А что хочется и не запрещено - разрешено. ну ок. только ddl создается по коммиту, причем несколько взаимосвязанных ddl в одной транзакции могут и не отработать. Не запрещено - да, не запрещено. Но не работает - да, не работает. Исправят это? Может быть, когда-нибудь. Пока работает так, как я сказал. Можешь дальше долбить в стену головой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2017, 23:54 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
kdvзеленый админМне так хочется. А что хочется и не запрещено - разрешено.ну ок. только ddl создается по коммиту, причем несколько взаимосвязанных ddl в одной транзакции могут и не отработать.Ничто не мешает использовать EXECUTE STATEMENT ... WITH AUTONOMOUS TRANSACTION. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 00:39 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
Антон КарасёвЕму явно не нравится имя индекса "IDX_ICE_TEST_MASTER$ID" А вообще с какой целью Вы вмешиваетесь и пытаетесь давать свои имена индексам. Тем более для primary key. Зачем это надо? Что бы потом точно знать как этот индекс называется. Ситуация может быть примерно такой. Есть начальный скрипт создания базы. Все дальнейшие изменения метаданных идут в виде скриптов-патчей которые последовательно накатываются на базу. Бывает нужно удалить индекс, или принудительно на него сослаться. Если сервер проименует его на свое усмотрение то в скрипте-патче можно это усмотрение и не угадать. Теоретически если на все экземпляры базы накатывать строго одинаково и в промежутке ничем не лазить - то эти автогенеренные имена должны совпасть. Но жизнь обычно сложнее. После того как я на этом накололся - создаю все констрейнты, даже PK - отдельной командой ALTER TABLE. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 04:28 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
fraksЧто бы потом точно знать как этот индекс называется. начиная с fb 1.5 абсолютно точно известно, что индекс для констрейнта пк и фк с именем ABC будет называться ABC, а не rdb$primary5 или rdb$foreign12. Поэтому достаточно корректно именовать констрейнты. У ТС в его примере индексы именуются (как я понял) для того, чтобы знать, по какому столбцу они созданы. А вот отличить ПК и ФК можно только косвенно CONSTRAINT PK_%s$ID PRIMARY KEY (ID) USING INDEX IDX_%s$ID ADD CONSTRAINT FK_%0:s$MASTER_ID FOREIGN KEY (MASTER_ID) REFERENCES %1:s (ID) USING INDEX IDX_%0:s$MASTER_ID ; Получается, для таблицы А ПК - IDX_AID ФК - IDX_AMASTER_ID p.s. поначалу я добавку "ID" воспринял как "номер индекса" или что-то вроде. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 11:11 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
kdvfraksЧто бы потом точно знать как этот индекс называется. начиная с fb 1.5 абсолютно точно известно, что индекс для констрейнта пк и фк с именем ABC будет называться ABC, а не rdb$primary5 или rdb$foreign12. Поэтому достаточно корректно именовать констрейнты. Я это и имел ввиду. Типа если сделать Код: plsql 1. 2. 3.
то сгенерится и имя констрейнта и имя индекса. А если сделать Код: plsql 1. 2. 3. 4.
то тут уже все прибито гвоздиками и будет заранее известным. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 12:44 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
fraksто сгенерится и имя констрейнта и имя индекса. именно. Но якобы можно написать и так create table A( id int not null primary key using index ...) в этом случае сгенерится только constraint, а потом его искать в системных таблицах. Нунах. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 13:20 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
fraksЧто бы потом точно знать как этот индекс называется. Ситуация может быть примерно такой. Есть начальный скрипт создания базы. Все дальнейшие изменения метаданных идут в виде скриптов-патчей которые последовательно накатываются на базу. Бывает нужно удалить индекс, или принудительно на него сослаться. Если сервер проименует его на свое усмотрение то в скрипте-патче можно это усмотрение и не угадать. Теоретически если на все экземпляры базы накатывать строго одинаково и в промежутке ничем не лазить - то эти автогенеренные имена должны совпасть. Но жизнь обычно сложнее. После того как я на этом накололся - создаю все констрейнты, даже PK - отдельной командой ALTER TABLE. +1 Для разраба, имеющего в саппорте больше одной БД и/или более одной версии ПО, требование на именование ВСЕХ объектов в базе - очевидно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2017, 11:27 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
PEAKTOPтребование на именование ВСЕХ объектов в базе - очевидно. что-то вас понесло. Вы все USING INDEX пишете? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2017, 12:22 |
|
firebird batch script
|
|||
---|---|---|---|
#18+
kdvPEAKTOPтребование на именование ВСЕХ объектов в базе - очевидно. что-то вас понесло. Вы все USING INDEX пишете? конечно. и много раз спасало, не только при апдейте структуры базы на новую версию. когда чинил базы с посыпавшихся винтов, тоже помогало: сразу по имени индекса понятно, где "кривые" записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2017, 12:30 |
|
|
start [/forum/topic.php?fid=40&msg=39441216&tid=1561622]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 269ms |
0 / 0 |