Ошибка Unsuccessful metadata update

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Ошибка Unsuccessful metadata update

Сообщение kmi » 18 сен 2007, 13:40

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 сен 2007, 13:54

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

kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Сообщение kmi » 18 сен 2007, 14:06

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

kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Сообщение kmi » 18 сен 2007, 14:18

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 сен 2007, 14:38

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

kmi
Сообщения: 30
Зарегистрирован: 29 июн 2007, 13:23

Сообщение kmi » 18 сен 2007, 14:44

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

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 сен 2007, 14:50

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 18 сен 2007, 15:46

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

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 18 сен 2007, 17:42

пока просто интерес - а зачем надо "это" создавать из скрипта?

Ответить