3

ユーザーの住所情報の都道府県名と国名が、国と都道府県をリストした一連のテーブルから取得されるようにしようとしています。これを行うために、次のようなテーブル変更コマンドを実行してみました...

ALTER TABLE User
    ADD FOREIGN KEY (stateProvince,country)
    REFERENCES `StateProvince`(`name`,`countryName`);

するとこんなメッセージが・・・

外部キー制約を使用してテーブル 'realtorprint_dev/#sql-d5c_3d' を作成できませんでした。参照されるテーブルには、参照される列が最初の列として表示されるインデックスはありません。

このエラーメッセージを処理する方法を知っている人はいますか?

州と国のテーブルの作成は次のとおりです...

CREATE TABLE Country (
  name varchar(40) NOT NULL,
  abbreviation varchar(4) NOT NULL,
  PRIMARY KEY  (name)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

CREATE TABLE StateProvince (
  countryName varchar(40) NOT NULL,
  name varchar(100) NOT NULL,
  abbreviation varchar(3) NOT NULL,
  PRIMARY KEY  (countryName,name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

alter table StateProvince
add constraint FK_StateProvince_Country
foreign key (countryName)
references Country (name);

そして今、ユーザーテーブルのために...

create table realtorprint_dev.user (
  id bigint not null,
  created datetime,
  email varchar(255) not null,
  fax varchar(255),
  mobile varchar(255),
  name varchar(255),
  password varchar(255),
  phone varchar(255),
  title varchar(255),
  tollFree varchar(255),
  updated datetime,
  web varchar(255),
  brokerage_id bigint,
  address varchar(255),
  city varchar(255),
  country varchar(255),
  stateProvince varchar(255),
  type varchar(255),
  zipPostal varchar(255),
  activated bit not null,
  locked bit not null,
  primary key (id),
  foreign key FK285FEB6722226 (brokerage_id) references brokerage(id)
);
4

2 に答える 2

5

参照されるテーブルには、参照される列が最初の列として表示されるインデックスはありません。

StateProvince。(name、countryName)にインデックスが必要ですが、 StateProvince。(countryName、name)にインデックスがあります。インデックスまたはFK参照の順序を逆にしてみてください。

于 2011-07-12T03:28:18.503 に答える
0

あなたは作成ステートメントを表示していないので、よくわかりませんが、これはrealtorprint_devテーブルに主キーがないことに関係していると思います。

于 2011-07-12T00:13:33.473 に答える