MySQL テーブル作成外部キー エラーの解決方法

MySQL テーブル作成外部キー エラーの解決方法

データベーステーブルA:

テーブル task_desc_tab を作成します
(
  id INT(11) PRIMARY KEY NOT NULL COMMENT '自動増分主キー' AUTO_INCREMENT,
  <strong>taskname</strong> VARCHAR(200) NOT NULL COMMENT 'タスク名',
  sqlname VARCHAR(20) NOT NULL COMMENT 'sqlファイル名',
  params VARCHAR(5000) NOT NULL COMMENT 'タスクパラメータ(JSON文字列形式)',
  updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '更新時刻',
  詳細 VARCHAR(3000) COMMENT 'タスクの説明情報(メモ用)'
)
 エンジン = InnoDB
 デフォルト文字セット = utf8;

データベースB:

テーブル exec_plan_tab を作成する
(
  id INT(11) 主キー NOT NULL AUTO_INCREMENT,
  <strong>タスク名</strong> VARCHAR(200) NOT NULL、
  開始日 DATE NOT NULL、
  終了日 DATE NOT NULL、
  updatetime TIMESTAMP デフォルト CURRENT_TIMESTAMP、
  制約 exec_plan_tab_task_desc_tab_taskname_fk 外部キー (taskname) 参照 task_desc_tab (taskname)
)
 エンジン = InnoDB
 デフォルト文字セット = utf8;

目標: テーブル B の taskname が外部キーとなるようにテーブルを作成します。テーブル A の taskname フィールドを参照してください。テーブルを作成すると、次のエラーが報告されます。

[2018-07-19 15:02:29] [HY000][150] 外部キー制約を持つテーブル 'daxin/#sql-5d_30' の作成に失敗しました。参照列が最初の列として表示される参照テーブルにインデックスがありません。
[2018-07-19 15:02:29] [HY000][1215] 外部キー制約を追加できません
[2018-07-19 15:02:29] [HY000][1215] 外部キー制約を追加できません

トラブルシューティングの結果、問題の原因が判明しました。テーブル A の taskname は、レコードの一意性を確保し、テーブル B で参照されるときに曖昧さを避けるために、UNIQUE フィールドを使用して変更する必要があります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQLは実際には3つの関係テーブルを作成します
  • MySQL で 800 万エントリのテスト データ テーブルをすばやく作成する方法
  • MySQL と PHP の基礎と応用トピック: データベース テーブルの作成
  • Pythonはdict辞書型のデータをMysqlに保存し、テーブルと列を自動的に作成します
  • 初心者向けのMySQLデータベースとテーブルDDLの作成と操作の学習
  • MySQLデータベースを使い始めるための最初のステップはテーブルを作成することです
  • MySQLでテーブルを作成し、フィールドコメントを追加する方法
  • MySQL テーブル作成操作コマンドの共有

<<:  スライディングカルーセル効果を実現する js

>>:  Linux crontab コマンドの使用

推薦する

CSSの優先度を理解する2つの方法

方法1: 値を追加する公式の説明を見るには MDN にアクセスしてください。優先度はどのように計算さ...

MySQL 学習ノート: 完全な SELECT ステートメントの使用例と詳細な説明

この記事では、MySQL 学習ノートの select ステートメントの完全な使用方法を例を使用して説...

Linuxターミナルでの一般的なMySQL操作コマンドの詳細な説明

仕える: # chkconfig --list すべてのシステム サービスを一覧表示します # ch...

JavaScript でピンボール ゲームの Web バージョンを実装する

参考までに、JavaScriptのオブジェクトとメソッドを使用して実装されたWebピンボールゲームを...

Google Chromeの自動入力問題に対する完璧な解決策

Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...

vue3 で vue-router を使用するための完全な手順

序文ルーティングの管理は、ほとんどのシングルページ アプリケーションにとって不可欠な機能です。 Vu...

HTML+CSS ボックスモデルの例 (円、半円など) 「border-radius」はシンプルで使いやすい

多くの友人は、フロントエンドを学習するときに、ボックス モデルがデフォルトで正方形であることに気付き...

UDP シンプル サーバー クライアント コード例

UDP の理論については詳しく説明しません。UDP に関する HelloWorld プログラムを紹介...

JavaScript カウントダウン プロンプト ボックス

この記事の例では、カウントダウンプロンプトボックスを実装するためのJavaScriptの具体的なコー...

Win2008 R2 mysql 5.5 zip 形式 mysql のインストールと設定

Win2008 R2 zip形式のMySQLのインストールと設定1. Baidu MySQL 5.6...

全文検索とキーワードスコアリング方式のMySQL実装例

1. はじめに今日、同僚から、MySQL を使用して ElasticSearch に似た全文検索機能...

MySQLデータベースが大きすぎる場合にバックアップと復元を行う方法

コマンド: mysqlhotcopyこのコマンドは、ファイルをコピーする前にテーブルをロックし、不完...

Dockerで複数のSpringbootを実行するための詳細なチュートリアル

Dockerは複数のSpringbootを実行する1番目: ポートマッピング 2番目: メモリサイズ...

MySQL インデックスの詳細な説明

目次1. インデックスの基本1.1 はじめに1.2 インデックスの仕組み1.3 インデックスの種類1...

Vue+EChartsは、中国の地図の描画と省の自動回転と強調表示を実現します。

目次成果を達成する完全なコード + 詳細なコメントまとめ成果を達成する完全なコード + 詳細なコメン...