2010-08-11 35 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 

我的平臺是帶有SP3的Window XP。我在Linux上測試了這一點,它是可以的。

有沒有人遇到過這個問題?我已經向MySQL報告了一個錯誤。

我剛剛試過版本5.1.49社區,問題仍然存在。

+0

尋找什麼問題是什麼,什麼都看不到。表和列引用不區分大小寫...... – 2010-08-11 01:44:45

回答

1

得到了MySQL的回覆:

米格爾·索洛薩諾:

謝謝你的錯誤報告。這是一個記錄的InnoDB 表的限制:

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

「在Windows上,InnoDB的總是小寫內部 存儲數據庫和表名要移動在從Unix二進制格式的數據庫到Windows 或從Windows到。 Unix,你應該使用小寫名稱創建所有的數據庫和表 。「