5

MySQL テーブルに制約を追加すると、この奇妙な動作が発生します。

[...] add constraint qrtz_blob_triggers_ibfk_1 foreign key [...]

SHOW CREATE TABLE は、制約を 2 回表示します。

CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY [...]
CONSTRAINT `QRTZ_BLOB_TRIGGERS_ibfk_1` FOREIGN KEY [...]

完全なセッションは次のとおりです。

mysql> DROP DATABASE IF EXISTS my_test; CREATE DATABASE my_test デフォルト文字セット utf8 collat​​e utf8_bin;
クエリ OK、影響を受ける 2 行 (0.07 秒)

クエリ OK、影響を受ける 1 行 (0.00 秒)

mysql> my_test を使用します。
データベースが変更されました
mysql>
mysql> DROP TABLE IF EXISTS `QRTZ_TRIGGERS`;
クエリ OK、影響を受ける行は 0、警告は 1 (0.00 秒)

mysql>
mysql> CREATE TABLE `QRTZ_TRIGGERS` (
       `TRIGGER_NAME` varchar(80) NOT NULL,
       `TRIGGER_GROUP` varchar(80) NOT NULL,
       主キー (`TRIGGER_NAME`,`TRIGGER_GROUP`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
クエリ OK、影響を受ける行は 0 (0.08 秒)

mysql>
mysql> DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`;
クエリ OK、影響を受ける行は 0、警告は 1 (0.00 秒)

mysql>
mysql> create table `QRTZ_BLOB_TRIGGERS` (`TRIGGER_NAME` varchar(80) not null, `TRIGGER_GROUP` varchar(80) not null, `BLOB_DATA` longblob, primary key (`TRIGGER_NAME`, `TRIGGER_GROUP`)) ENGINE=InnoDB DEFAULT CHARSET =utf8;
クエリ OK、影響を受ける行は 0 (0.08 秒)

mysql>
mysql> テーブル `QRTZ_BLOB_TRIGGERS` を変更 インデックス qrtz_blob_triggers_ibfk_1 (`TRIGGER_NAME`, `TRIGGER_GROUP`) を追加し、制約 qrtz_blob_triggers_ibfk_1 外部キー (`TRIGGER_NAME`, `TRIGGER_GROUP`) を追加 `QRTZ_TRIGGERS` (`TRIGGER_NAME`, `TRIGGER_GROUP`) を参照 ON UPDATE RESTRICT制限を削除します。
クエリ OK、影響を受ける行は 0 (0.18 秒)
レコード: 0 重複: 0 警告: 0

mysql>
mysql> show create table QRTZ_BLOB_TRIGGERS \G
**************************** 1. 行 ******************** ********
       表: QRTZ_BLOB_TRIGGERS
テーブルの作成: CREATE TABLE `QRTZ_BLOB_TRIGGERS` (
  `TRIGGER_NAME` varchar(80) NOT NULL,
  `TRIGGER_GROUP` varchar(80) NOT NULL,
  `BLOB_DATA`ロングブロブ、
  主キー (`TRIGGER_NAME`,`TRIGGER_GROUP`),
  KEY `qrtz_blob_triggers_ibfk_1` (`TRIGGER_NAME`,`TRIGGER_GROUP`),
  CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`TRIGGER_NAME`, `TRIGGER_GROUP`),
  CONSTRAINT `QRTZ_BLOB_TRIGGERS_ibfk_1` FOREIGN KEY (`TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`TRIGGER_NAME`, `TRIGGER_GROUP`)
) エンジン=InnoDB デフォルト文字セット=utf8
セットで 1 行 (0.00 秒)

使用する

[...] add constraint QRTZ_BLOB_TRIGGERS_ibfk_1 foreign key [...]

正常に動作します。

MySQL 5.5 で Ubuntu 12.04 LTS を使用しています。

mysql-server-5.5     5.5.32-0ubuntu0.12.04.1

そこで何が起こっているのか、誰にも手がかりがありますか?

4

1 に答える 1

3

これは既知のバグで、今後のリリースで修正されます。

InnoDB は、名前に文字列「<em>ibfk」を含むユーザー定義の外部キー制約の名前を変更し、重複した制約が発生しました。」

バグ レポートでは、バージョン 5.1.72、5.5.32、5.6.14、5.7.2 での修正が推奨されていますが、5.5 ブランチのタイプミスが疑われます。リリース日を考えると、v5.5 で修正されると思います。34 .

于 2013-08-13T16:19:34.163 に答える