2013-03-04 60 views
0

你知道在哪裏有外鍵我有問題嗎?FOREIGN KEY - 執行表

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( `countryId` bigint(20) NOT NULL AUTO_INCREMENT, `personId` bigint(20) NOT ' at line 1 

表1與外鍵

ALTER TABLE `country` (
    `countryId` bigint(20) NOT NULL AUTO_INCREMENT, 
    `personId` bigint(20) NOT NULL, 
    `Name` varchar(5000) DEFAULT NULL, 
    PRIMARY KEY (`countryId`), 
    UNIQUE KEY `personId` (`personId`), 
    CONSTRAINT fk_PerOrders FOREIGN KEY (`personId`) REFERENCES perosn(`PersonId`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0; 

表2

CREATE TABLE `perosn` (
    `PersonId` bigint(20) NOT NULL AUTO_INCREMENT, 
    `Name` varchar(5000) DEFAULT NULL, 
    `Surname` varchar(5000) NOT NULL, 
    PRIMARY KEY (`PersonId`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0; 
+0

你的第一條語句具有'ALTER TABLE',它應該是'CREATE TABLE' – 2013-03-04 14:49:59

+0

如果你想有'FOREIGN KEY'約束,用'InnoDB'引擎定義你的表,而不是'MyISAM'。 – 2013-03-04 14:50:57

+0

爲什麼超長超長的varchar列?我既不知道一個國家需要5000個字符的名字,也不知道有這麼長的名字或姓氏的人。 – 2013-03-04 14:53:52

回答

1
ALTER TABLE `country` (
^^^^^--- should be CREATE 

CREATE TABLE `perosn` (
       ^^^^^^--- should be person 
+0

我的表存在,我不得不使用ALTER。我更改了引用,但是我一直有錯誤 – 2013-03-04 14:58:19

+1

,但是您正在使用create table語法。 ALTER語法非常不同。這就是爲什麼你會收到錯誤。 RTLM:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html – 2013-03-04 14:59:24

+0

我不知道爲什麼,但是當我執行這個代碼時,這個位置不會被添加(CONSTRAINT fk_PerOrders FOREIGN KEY(' personId')參考perosn('PersonId')) – 2013-03-04 15:03:59