Имя таблицы, на которую ссылаются внешние ключи MySQL, всегда выдается в нижнем регистре - PullRequest
2 голосов
/ 11 августа 2010

Сначала создайте эти две таблицы:

CREATE TABLE IF NOT EXISTS TAB_COMPANY (
  ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(100) NOT NULL,
  PRIMARY KEY(ID),
  UNIQUE KEY(NAME)
) ENGINE=INNODB DEFAULT CHARSET=UTF8;

CREATE TABLE IF NOT EXISTS TAB_DEPARTMENT (
  ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  NAME VARCHAR(100) NOT NULL,
  COMPANYID INT(10) UNSIGNED NOT NULL,
  PRIMARY KEY(ID),
  INDEX FK_TAB_DEPARTMENT_TAB_COMPANY_COMPANYID(COMPANYID ASC),
  CONSTRAINT FK_TAB_DEPARTMENT_TAB_COMPANY_COMPANYID
    FOREIGN KEY (COMPANYID) REFERENCES TAB_COMPANY(ID) ON DELETE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=UTF8;

Затем показать создание таблицы TAB_DEPARTMENT:

CREATE TABLE `TAB_DEPARTMENT` (
  `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `NAME` varchar(100) NOT NULL,
  `COMPANYID` int(10) unsigned NOT NULL,
  PRIMARY KEY (`ID`),
  KEY `FK_TAB_DEPARTMENT_TAB_COMPANY_COMPANYID` (`COMPANYID`),
  CONSTRAINT `FK_TAB_DEPARTMENT_TAB_COMPANY_COMPANYID` FOREIGN KEY (`COMPANYID`)
REFERENCES `tab_company` (`ID`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Имя таблицы в предложении ссылки на внешний ключ приводится в нижнем регистре.

mysql> show variables like '%lower%';
lower_case_file_system ON
lower_case_table_names 0

mysql> show variables like 'version';
version 5.1.43-community

Моя платформа - Windows XP с пакетом обновления 3 (SP3). Я проверял это на Linux, все в порядке.

Кто-нибудь сталкивался с этой проблемой раньше? Я уже сообщил об ошибке в MySQL.

Я только что попробовал на версии 5.1.49-community, и проблема все еще там.

1 Ответ

1 голос
/ 11 августа 2010

Получил ответ от MySQL:

От Мигеля Солорзано:

Спасибо за сообщение об ошибке. Это задокументированное ограничение InnoDB таблица:

http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

"В Windows InnoDB всегда хранит имена баз данных и таблиц внутри в нижнем регистре. Переместить базы данных в двоичном формате из Unix в Windows или из Windows в Unix, вы должны создать все базы данных и таблицы используя строчные имена. «

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...