mySQL 5.5.17 / Сбой синхронизации Workbench 5.2 (номер ошибки: 150) - PullRequest
0 голосов
/ 06 февраля 2012

Я пытаюсь синхронизировать некоторые обновления модели с существующей базой данных на MySQL.Раньше это работало хорошо, но теперь я получаю сообщение об ошибке:

#1005 - Can't create table 'edu_dev.#sql-132f_eef09' (errno: 150)

Я не могу понять, что не так.Обновление, которое я пытаюсь запустить, было сгенерировано следующим образом:

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

ALTER TABLE `edu_dev`.`user` 
  ADD CONSTRAINT `fk_user_language1`
  FOREIGN KEY (`language` )
  REFERENCES `edu_dev`.`language` (`iso` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;

..
..
..

SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

edu_dev .язык уже существует со столбцом, используемым для проверки внешнего ключа.У меня есть 50 других таблиц, которые тоже должны быть обновлены, поэтому я бы предпочел не делать это вручную.

1 Ответ

0 голосов
/ 07 февраля 2012

Проблема решена.

Убедитесь, что все таблицы с ограничениями внешнего ключа имеют одинаковые параметры сортировки. По некоторым причинам некоторые переключились на latin1_swedish_ci, в то время как они должны были быть utf8_general_ci

Существует также хороший инструмент для изменения параметров сортировки всех таблиц базы данных: Phoca Changing Collation

...