2016-12-22 11 views
0

テーブルをInnoDBに設定し、リレーションビューに入ることができます。しかし、私は制約なしで関係を追加できます。問題の原因は何ですか?リレーションビューでphpMyAdminでリレーションを設定できません

Serverのバージョン:5.7.14 - MySQL Community Serverが(GPL)

phpMyAdminのバージョン:4.6.4

WampServerバージョン:3.0.6 enter image description here

ここで私は期待してどのように絵"内部関係"テーブルが欠落しています: enter image description here

答えて

2

Q: "問題の原因は何ですか?"

A:問題のある動作が報告されていません。

私はあなたが取ったステップの説明を見ていますが、私はそれらのステップの結果があなたの期待を満たしていないと推測しています。

ご希望のものを明確にすることができれば、お手伝いできます。


簡潔に述べる... InnoDBは、2つのテーブル間 "関係" で

を発現させ、FOREIGN KEY制約を作成することによって実施することができます。リレーショナルデータベース理論、「関係」で


タプルの集合です。 RDBMSでは、「リレーション」はTABLEとして実装されています。


あなたが達成しようとしている内容の説明、そしてあなたが観察している問題行動のより正確な記述があった場合、いくつかの援助を与えることができるだろう。


EDIT

のInnoDBでは、私たちは、テーブル間の関係を表現するために、データベースに定義された外部キーを使用することができます。これらはInnoDBテーブル定義に格納されています。

PHPMyAdminの「内部関係」は、外部キーをサポートしていないMyISAMテーブルで使用されます。

PHPMyAdminが「内部関係」を保存するように設定されていることを確認してください。構成はpma__relationという名前のテーブルに格納されます。実際のテーブル名は、PHPMyAdminの設定で指定します。

https://docs.phpmyadmin.net/en/latest/config.html

その機能が有効になっている場合は、設定ファイルに次のような行があるはずです:

$cfg['Servers'][$i]['relation'] = 'pma__relation'; 

(あなたが実行しているPHPMyAdminのバージョンのドキュメントを参照してください。)

そして、pma__relationテーブルがデータベースに存在することを確認します。

すべてが正しく設定されているように見える場合は、ENGINE = MYISAMを使用する2つのテストテーブルを使用して機能をテストし、それらのテーブルで機能しているかどうかを確認します。

MYISAM以外のストレージエンジンを搭載したテーブルでこの機能が動作するはずです。 ENGINE = INNODBテーブルで動作するかどうかわかりません。

+0

あなたの答えをありがとう!私はどのようにビューが期待されるのかの写真を追加しました。 – honiahaka10

+1

@ honiahaka10:その機能がINNODBテーブル、またはMYISAMテーブルで動作するはずかどうかわかりません。 PHPMyAdminの設定をチェックして、 'relation'テーブルの名前が指定されていること、そしてそのテーブルがデータベースに存在することを確認します。私は私の答えに編集しました。 – spencer7593

+1

@ spencer7593あなたの答えは非常に優れており、非常に徹底しています。 1つのことを追加するには、内部関係の機能はどのテーブルタイプでも機能するはずです(実際にはMySQLが関係をサポートするInnoDBなどのテーブルにはほとんど意味がありません)。私はここで最も可能性の高い原因は、設定ディレクティブまたはデータベース構造が不足しているか、または間違っていることに同意します –

関連する問題