简体   繁体   English

添加外键时,“ REFERENCES”附近出现错误#1064

[英]Error #1064 near “REFERENCES” while adding a foreign key

I keep getting error 1064 while trying to create a foreign key: 尝试创建外键时,我不断收到错误1064:

ALTER TABLE `zajimavost`
    ADD CONSTRAINT FK_zaj_bod 
    FOREIGN KEY def_bod
      REFERENCES `bod`(`gid`)
      ON UPDATE CASCADE ON DELETE CASCADE;

It complains: 它抱怨:

#1064 - 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 'REFERENCES `bod`(`gid`)
      ON UPDATE CASCADE ON DELETE CASCADE' at line 4

I tried it with or without the backticks, the problem is always the same. 无论是否有反引号,我都尝试过,问题始终是相同的。

My tables: 我的桌子:

CREATE TABLE `zajimavost` (
 `zaj_id` int(11) NOT NULL,
 `lok_id` int(11) NOT NULL,
 `nazev` varchar(255) COLLATE utf8_czech_ci NOT NULL,
 `kategorie` int(11) NOT NULL DEFAULT '1',
 `datace_od` int(11) NOT NULL DEFAULT '31',
 `datace_do` int(11) NOT NULL DEFAULT '60',
 `def_bod` int(11) DEFAULT NULL,
 PRIMARY KEY (`zaj_id`),
 KEY `ck_zaj_lok` (`lok_id`),
 KEY `zaj_id` (`zaj_id`),
 KEY `FK_zaj_kat` (`kategorie`),
 KEY `FK_zaj_bod` (`def_bod`),
 CONSTRAINT `FK_zaj_kat` FOREIGN KEY (`kategorie`) REFERENCES `kategorie` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `fk_zaj_lok` FOREIGN KEY (`lok_id`) REFERENCES `lokalita` (`lok_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci

CREATE TABLE `bod` (
 `gid` int(11) NOT NULL AUTO_INCREMENT,
 `geom` point DEFAULT NULL,
 `radius` int(4) NOT NULL DEFAULT '50',
 PRIMARY KEY (`gid`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci

There are data in the tables. 表中有数据。

So how to solve it? 那么如何解决呢?

You need to use () in child table column name while adding foreign key, Try this one 添加外键时,需要在子表的列名中使用() ,请尝试使用此

ALTER TABLE zajimavost 
ADD CONSTRAINT FK_zaj_bod 
FOREIGN KEY (def_bod) REFERENCES `bod`(`gid`)  
ON UPDATE CASCADE ON DELETE CASCADE;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM