2016-10-08 28 views
0

を作成しようとしたとき、私は、共通の列を共有する2つのテーブルを作成しようとしています。これらのテーブルは、すべてが適切にリンクされた後にデータを追加したいので、現在空です。私は構文エラーの一番下にはいないようです。私は問題のない 'publisher'テーブルを作成できますが、次のテーブルへの外部キーとして 'publishername'というプライマリキーを参照することはできません。のmySQL:エラー外部キー

私は "ライン1に近い '参照出版社(PUBLISHERNAME))'" 恐ろしいE

RROR 1064を取得します。

これまでこれと同様の構文を使用していたので、私は迷っています。事前に感謝します!


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