[解決済み] MySQL エラー 1215。外部キー制約を追加できません
2022-03-14 03:28:19
質問
新しいスキーマをデータベースサーバーに転送しようとしているのですが、なぜこのようなエラーが発生するのかがわかりません。
ここで答えを探そうとしましたが、私が見つけたすべてのものは、データベースエンジンをInnoDBに設定するか、外部キーとして使おうとしているキーが、それ自身のテーブルの主キーであることを確認するようにと書いてありました。 私が間違っていなければ、この2つのことを行いました。 他にどうすればいいでしょうか?
Executing SQL script in server
ERROR: Error 1215: Cannot add foreign key constraint
-- -----------------------------------------------------
-- Table `Alternative_Pathways`.`Clients_has_Staff`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients_has_Staff` (
`Clients_Case_Number` INT NOT NULL ,
`Staff_Emp_ID` INT NOT NULL ,
PRIMARY KEY (`Clients_Case_Number`, `Staff_Emp_ID`) ,
INDEX `fk_Clients_has_Staff_Staff1_idx` (`Staff_Emp_ID` ASC) ,
INDEX `fk_Clients_has_Staff_Clients_idx` (`Clients_Case_Number` ASC) ,
CONSTRAINT `fk_Clients_has_Staff_Clients`
FOREIGN KEY (`Clients_Case_Number` )
REFERENCES `Alternative_Pathways`.`Clients` (`Case_Number` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Clients_has_Staff_Staff1`
FOREIGN KEY (`Staff_Emp_ID` )
REFERENCES `Alternative_Pathways`.`Staff` (`Emp_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL スクリプトの実行が終了しました: ステートメント。7成功、1失敗
以下は、親テーブルのSQLです。
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients` (
`Case_Number` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
`Address` CHAR(50) NULL ,
`Phone_Number` INT(10) NULL ,
PRIMARY KEY (`Case_Number`) )
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Staff` (
`Emp_ID` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
PRIMARY KEY (`Emp_ID`) )
ENGINE = InnoDB
解決方法は?
推測ですが
Clients.Case_Number
および/または
Staff.Emp_ID
とは全く同じデータ型ではありません。
Clients_has_Staff.Clients_Case_Number
と
Clients_has_Staff.Staff_Emp_ID
.
おそらく、親テーブルのカラムは
INT UNSIGNED
?
両方のテーブルで全く同じデータ型である必要があります。
関連
-
MySQLデータベース・インデックスの左端一致の原則
-
MySQLデータベースでvarchar型の数値の大きさを比較する方法
-
MySQLとOracleの一括挿入SQLの汎用的な記述例
-
MySQL インタビューの質問 - ハッシュインデックスを設定する方法
-
[解決済み】DynamoDB : 提供されたキー要素がスキーマと一致しません。
-
mysql がエラーを報告します。不明な文字セットです。'utf8mb4'
-
[解決済み] MySQLで外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み】既存テーブルへの外部キー追加
-
[解決済み】外部キー制約。ON UPDATEとON DELETEを使用する場合
-
[解決済み】MySQLで外部キー制約を追加できない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQL Innodb インデックスメカニズム詳細解説
-
MySQLインストールチュートリアル(Windows用)詳細
-
MySQL インタビューの質問 - ハッシュインデックスを設定する方法
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
[解決済み] 親の行を削除または更新できない:外部キー制約が失敗する
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLデータベースのキャラクタセットと照合順序をすべてUTF-8に変換する方法は?
-
[解決済み】MySQLで外部キー制約を追加できない