2017-03-10 11 views
0

私はすでにいくつかの記事を読みましたが、phpMyAdminの中で外部キーを作成するには私の問題を解決することができませんでした。私は、次の2つのスキーマを持っている:PHPMyAdminのMySQLエラー(データ型を確認してください)

CREATE TABLE `verifieduser` (
    `id` int(11) NOT NULL, 
    `name` varchar(50) NOT NULL, 
    `email` varchar(50) NOT NULL, 
    `password` varchar(50) NOT NULL, 
    `country` varchar(50) NOT NULL, 
    `location` varchar(50) NOT NULL, 
    `rname` varchar(50) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE `restaurant` (
    `location` varchar(50) NOT NULL, 
    `cuisine` varchar(30) NOT NULL, 
    `description` varchar(200) NOT NULL, 
    `phone` varchar(20) NOT NULL, 
    `rname` varchar(50) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

ALTER TABLE `restaurant` 
    ADD PRIMARY KEY (`location`,`rname`), 
    ADD UNIQUE KEY `phone` (`phone`); 

私はverifieduserテーブルのRNAMEは、レストランのテーブルでRNAMEへの外部キーも持ってしようとしています。なぜ私はそれが同じ値を持っているから私を許可しないのか分からないし、制約を "SET NULL"に変更しなかった。

ありがとうございます。

答えて

0

restaurantのプライマリキーとしてrnameを設定していないクエリでは、それが問題だと思います。私の意見では、あなたが主キーであるべきとverifieduserにあなたがrestaurant

+0

申し訳ありませんが、私は私が実際にレストランのテーブルの主キーとして場所とRNAMEを持っていますが、まだその問題を持っていなかったことを示すためにポストを編集しました。 –

+0

CLIを使用してテーブルを作成していますか? – Saad

+0

申し訳ありませんが、私は "CLi"という用語になじみがありません。私は属性を追加するために私のテーブルの構造タブのphpMyAdminにある。 のADD CONSTRAINT verifieduser' –

0

FOREIGN KEY関係はタイプUNIQUE又はPRIMARY KEY の親テーブル内のいくつかの列と子テーブルの同じ整合型の列は、それらした二テーブル即ちParent table & Child tableを必要とします。

あなたのケースでは、rname varchar(50) NOT NULL is neitherユニークnorプライマリ. So make it UNIQUEでもPRIMARYでも同じです。

+0

外部キーを追加申し訳ありませんが、私は私が実際にレストランのテーブルの主キーとして場所とRNAMEを持っていますが、まだその問題を持っていなかったことを示すためにポストを編集しました。 –

0

ファーストへridとしてforiegn鍵を持っている必要がありrestaurantの列名idを持つ必要があり、あなたはテーブルverifieduserを変更し、いくつかのキーをRNAMEする必要があります。その後、あなたはそれを外部キーにすることができます。以下のクエリを実行するだけです。これらがあなたのために働くことを願っています。その後

ALTER TABLE `verifieduser` ADD PRIMARY KEY(`rname`); 

ALTER TABLE `restaurant` 
ADD FOREIGN KEY (`rname1`) REFERENCES `verifieduser` (`rname`) 
関連する問題