さて、私は2つのテーブルを持っています
publica_evento_grupo
Field | Type | Null | Key | Default | Extra
id_evento_grupo int(10) unsigned NO PRI auto_increment
id_evento int(8) unsigned NO MUL
id_grupo int(8) unsigned NO MUL
identificacao varchar(55) NO
publica_identificacao_publicacao
Field | Type | Null | Key | Default | Extra
id_evento int(8) unsigned NO PRI
identificacao varchar(55) NO PRI
publica_evento_grupo
. id_evento
in は、publica_eventoという 3 番目のテーブルへの外部キーですが、テーブルへの列と共に外部キーでもありますpublica_identificacao_publicacao
。identificacao
. 問題は、キーによってpublica_evento_grupoをpublica_identificacao_publicacaoid_evento
に関連付ける外部キーを作成する必要があることですが、列で別の FK を作成しようとすると、identificacao
以下の errno が表示されます。
[Err] 1005 - Can't create table '#sql-1049_1980992' (errno: 150).
ご覧のとおり、テーブルpublica_identificacao_publicacaoには 2 つの PK があり、それがそれらを関連付けるには 2 つの FK である必要がある理由です。私が知る限り、後でインデックスを作成する必要があるため、まだインデックスを作成していません。 FK 制約を追加し、 evento_grupoとidentificacao_publicacaoid_evento
の間の列に FK 制約を作成できましたが、列だけでこのエラーが発生する理由がわかりませんidentificacao
編集 1: @RolandBouman そのコマンドを使用する権限がありません SHOW ENGINE INNODB STATUS
EDIT 2: @Geoff_Montee 渡されたコマンドは実際に機能しました。なぜその構造を使用するのかを理解するには、この質問を見てくださいMySQL UNIQUE Constraint multiple columns condition