Вопрос

Остаются Индексы после удаления полей!

После удаления ненужных полей имею подобную проблему:

Ошибка сохранения: The object 'DFPjiT5BAEkjVmUpHb20LutF87I' is dependent on column 'UsrFloatPointsPLCG'. ALTER TABLE DROP COLUMN UsrFloatPointsPLCG failed because one or more objects access this column. 

 

Удалил неиспользуемые поля.

Теперь не могу опубликовать изменения: ошибка выше.

Это говорит о том, что поля он удаляет,  но индексы, на них указывающие - нет.

Проблема известна очень давно, обещали решить.

Полей было удалено много (При Сохранить никаких ошибок не возникало, только при Опубликовать). 

Сейчас не могу откатить изменения (не нашёл такого функционала).

Для решения проблемы - возвращаю поля обратно так: 

+ делаю "Опубликовать", база блокируется на ~15 минут

+ получаю ошибку, типа, как вверху

+ добавляю недостающее поле

+ повторяю процедуру.

 

При таком алгоритме в среднем восстанавливаю 1 поле в 15 минут.

Прошу решить проблему в дальнейшем или дать SQL-скрипт очистки недействительных индексов.

 

Спасибо!

Нравится

4 комментария
Лучший ответ

Вы могли бы почистить просто свою БД, удалив те поля, которые вы в объекте удалили, а при выполнения SQL запроса по удалению, возможно получили бы более конкретную ошибку, например наличие связей и т.д.

Вы могли бы почистить просто свою БД, удалив те поля, которые вы в объекте удалили, а при выполнения SQL запроса по удалению, возможно получили бы более конкретную ошибку, например наличие связей и т.д.

Вообще, не рекомендуется без особой нужды удалять поля, поскольку к ним может быть ещё привязана логика в скриптах и процессах.

Вручную удалить индекс можно SQL-запросом «DROP INDEX», по Вашей ссылке описано подробнее.

А если доступа в базу нет, запрос можно запустить при помощи дополнения «SQL Executor».

Зверев Александр,

Спасибо за ответ. Ручное удаление индексов - это понятно, но опасно. Хотелось бы, чтобы эту задачу на себя всё же взяла Система. Она же чтобы и проверяла, используется ли где-то это поле, давая подсказку, а не ошибку. К сожалению, поля появляются массово при разработке, позже используется только часть и чистить приходится.

Слишком много мест, где могут быть упоминания поля: все серверные и клиентские скрипты, БП, кейсы, действия. Если проверять тексты всех схем  при сохранении, оно будет длиться ещё дольше, чем публикация.

Разработку лучше производить на тестовой базе, а потом на основную пакетами или схемами переносить уже завершённую логику без лишнего.

Показать все комментарии