Помощь с: ERROR 1025 (HY000): ошибка при переименовании.... (errno: 150)
Я получаю эту ошибку, когда пытаюсь запустить команду alter table для удаления столбца:
ОШИБКА 1025 (HY000): ошибка при переименовании.... (errno: 150).
Если я правильно понимаю, это проблема с внешним ключом, но я не знаю, как это исправить. Кто-нибудь будет так добр и расскажет мне, как заставить его работать.
Код, используемый для создания таблицы:
CREATE TABLE categories(
cid INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
assets_id INT NOT NULL,
cat_name VARCHAR(30) NOT NULL,
INDEX(assets_id),
FOREIGN KEY (assets_id) REFERENCES asset(aid) ON UPDATE CASCADE
)
ENGINE=INNODB DEFAULT CHARSET=utf8;
Команда alter:
ALTER TABLE categories DROP COLUMN assets_id;
Категории таблицы полностью пусты. Таким образом, нет информации о том, чтобы устанавливать ограничения CASCADE. Так вы могли бы мне помочь, какое волшебство мне нужно для удаления столбца assets_id. Спасибо.
Ответы
Ответ 1
Используйте SHOW CREATE TABLE categories
, чтобы показать имя ограничения.
Скорее всего, это будет categories_ibfk_1
Используйте имя, чтобы сначала удалить внешний ключ и столбец:
ALTER TABLE categories DROP FOREIGN KEY categories_ibfk_1;
ALTER TABLE categories DROP COLUMN assets_id;
Ответ 2
Для меня проблема была другая:
Сайт был (случайно) доступен для всех. Поэтому обновление script было запущено несколько раз. Это вызвало условия гонки, которые порождали такие ошибки.
- > Убедитесь, что сайт получает доступ только один раз, до тех пор, пока не закончится каждый script!