Таблицы InnoDB создаются как MyISAM - PullRequest
0 голосов
/ 07 ноября 2011

Я локально создаю свои таблицы базы данных, используя phpmyadmin. Я установил их движок на innoDB и создал отношения с внешним ключом, также используя phpmyadmin. Все работает локально.

Однако если я попытаюсь экспортировать эти таблицы на рабочий сайт, таблицы будут созданы как MYISAM, и с помощью индексов столбцов они не будут связаны как внешние ключи с другой таблицей.

Есть идеи, почему это произойдет?

Чтобы экспортировать таблицы, я просто захожу в Экспорт в PhpMyAdmin, это пример запроса, который он мне дает, который я запускаю на производственном сайте:

CREATE TABLE IF NOT EXISTS `foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `barId` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `barId` (`barId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


ALTER TABLE `foo`
  ADD CONSTRAINT `foo_ibfk_1` FOREIGN KEY (`barId`) REFERENCES `barTable` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION;

Это создает таблицу и создает индекс для barId, но механизмом таблицы является myisam вместо inno, и нет внешнего ключа для barId, ссылающегося на barTable.id

1 Ответ

1 голос
/ 07 ноября 2011

Из того, что вы говорите, похоже, что сервер производственной базы данных игнорирует предложения ENGINE = InnoDB.

Проверяли ли вы, что InnoDB включен на производственном сервере?

...