Страница 1 из 1

Ошибка Unsuccessful metadata update

Добавлено: 18 сен 2007, 13:40
kmi
Создаю базу данных Firebird. Создаю в ней таблицы путем выполнения скрипта. Все создано успешно.
Потом пытаюсь задать вторичные ключи тоже скриптом, но получаю ошибку Unsuccessful metadata update. Object <table> is in use. Ошибка повторяется при каждой попытке ввести вторичный ключ в какую-либо таблицу.
Что за зверь?

Добавлено: 18 сен 2007, 13:54
Merlin
а) FK создаются в режиме монопольного доступа (в смысле не только коннектов, но и транзакций) к базе.
б) Созданию FK должен предшествовать коммит предыдущих действий, прямо или косвенно способных затянуть обе таблицы в кеш метаданных.
в) IBExpert во-первых, является многооконным и, соответственно, многотранзакционным инструментом, во-вторых, не всегда вовремя закрывает транзакции и отпускает хендлы.

Добавлено: 18 сен 2007, 14:06
kmi
Merlin писал(а):в) IBExpert во-первых, является многооконным и, соответственно, многотранзакционным инструментом, во-вторых, не всегда вовремя закрывает транзакции и отпускает хендлы.
IBExpert тут ни при чем. База создается и наполняется программно.

Добавлено: 18 сен 2007, 14:18
kmi
Кроме того, активные транзакции после создания таблиц отсутствуют.

Добавлено: 18 сен 2007, 14:38
Merlin
kmi писал(а):Кроме того, активные транзакции после создания таблиц отсутствуют.
Если FB 1.5 и выше - это утверждение FALSE. На FB1 в некоторых случаях требовался переконнект.

Добавлено: 18 сен 2007, 14:44
kmi
Merlin писал(а):Если FB 1.5 и выше - это утверждение FALSE. На FB1 в некоторых случаях требовался переконнект.
Переконнект пробовал. С тем же успехом. Пробовал закрыть все транзакции, получил сообщение, что активных транзакций нет.

Добавлено: 18 сен 2007, 14:50
Merlin
kmi писал(а):
Merlin писал(а):Если FB 1.5 и выше - это утверждение FALSE. На FB1 в некоторых случаях требовался переконнект.
Переконнект пробовал. С тем же успехом. Пробовал закрыть все транзакции, получил сообщение, что активных транзакций нет.
Короче. Либо у тебя особенный FB, либо есть ещё соединения (например, из среды Дельфи), либо не сосчитал все транзакции. Скорей всего второе, но можешь веровать и в первое, вопросы религии - дело личное.

Добавлено: 18 сен 2007, 15:46
WildSery
kmi писал(а):Переконнект пробовал. С тем же успехом. Пробовал закрыть все транзакции, получил сообщение, что активных транзакций нет.
Подключись (монопольно) ISQL, выполни создание FK. Получается?

Добавлено: 18 сен 2007, 17:42
kdv
пока просто интерес - а зачем надо "это" создавать из скрипта?