2010-08-11 2 views
1

Сначала создайте эти две таблицы:MySQL внешние ключи всегда вынуждены строчные

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 

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

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

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

+0

Посмотрите, в чем проблема, ничего не видя. Табличные и столбцовые ссылки не чувствительны к регистру ... –

ответ

1

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

От Miguel Solorzano:

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

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

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