2016-10-08 7 views
0

Я пытаюсь создать две таблицы, которые имеют общий столбец. Эти таблицы в настоящее время пустые, так как я хотел бы добавить данные после того, как все они связаны соответствующим образом. Похоже, что я не могу разобраться в синтаксической ошибке. Я могу создать «издатель» таблицы без проблем, но не могу ссылаться на первичный ключ «publishername» в качестве внешнего ключа для следующей таблицы.mySQL: Ошибка при попытке создать внешний ключ

я Страшный E

RROR 1064 "рядом с 'ссылки издателя (PublisherName))' в строке 1".

Я потерян, потому что ранее использовал аналогичный синтаксис для этого. Большое спасибо заранее!


create table publisher (
publishername varchar(30) primary key, 
city varchar(15), 
country varchar(10), 
telephone varchar(15), 
yearfounded int(4)); 

create table book (
booknumber int(3) primary key, 
bookname varchar(50), 
publicationyear int(4), 
pages int(4), 
publishername varchar references publisher(publishername)); 
+0

Ищите синтаксис внешнего ключа – Mihai

+0

Это плохой дизайн из-за изменения имени издателя. Он должен быть тонким auto_increment INT или аналогичным, уникальным – Drew

+0

Эта проблема связана с ошибкой 1064, но это скорее проблема дизайна. Таким образом, дура забивает цель. – Drew

ответ

0

Похоже, вы не дали длину внешнего ключа. Это прекрасно работает. Вы можете проверить его here.

create table publisher (
publishername varchar(30) primary key, 
city varchar(15), 
country varchar(10), 
telephone varchar(15), 
yearfounded int(4)); 

create table book (
booknumber int(3) primary key, 
bookname varchar(50), 
publicationyear int(4), 
pages int(4), 
publishername varchar(30) references publisher(publishername)); 
+0

О, ничего себе. Не могу поверить, что я этого не видел. По какой-то причине я думал, что привязка внешнего ключа к первичному ключу автоматически наследует длину. Спасибо, что поняли это недоразумение! –

+0

Без проблем @ W.B :) – asfandahmed1

Смежные вопросы