背景
我们运行MySQL Aurora (5.7.mysql_aurora.2.07.2),托管供应商产品。供应商为其版本升级提供迁移SQL脚本。
我们有一个问题,即迁移不能在MySQL Aurora上成功运行,而是在其他MySQL 5.7数据库上运行,我们非常想知道为什么只在Aurora上发生这种情况。
详细信息
-- 1
DROP DATABASE IF EXISTS drop_index_test;
-- 2
CREATE DATABASE IF NOT EXISTS drop_index_test DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;
-- 3
use drop_index_test;
-- 4
CREATE TABLE msg
(
id BIGINT AUTO_INCREMENT NOT NULL,
uuid VARCHAR(36) NOT NULL,
user_id VARCHAR(36),
title LONGTEXT,
CONSTRAINT pk_msg PRIMARY KEY (id),
CONSTRAINT uq_msg_uuid UNIQUE (uuid)
);
-- 5
CREATE TABLE ack
(
id BIGINT AUTO_INCREMENT NOT NULL,
msg_id BIGINT NOT NULL,
user_id VARCHAR(36) NOT NULL,
CONSTRAINT pk_ack PRIMARY KEY (id),
CONSTRAINT fk_ack2msg_01 FOREIGN KEY (msg_id) REFERENCES msg (id)
);
-- 6
CREATE UNIQUE INDEX ix_ack_mid_uid
ON ack (msg_id, user_id);
-- 7
ALTER TABLE msg
ADD user_id_upper VARCHAR(36) AS (UPPER(user_id));
-- 8
CREATE INDEX ix_msg_upper_user_id ON msg(user_id_upper);
-- 9
ALTER TABLE ack
ADD user_id_upper VARCHAR(36) AS (UPPER(user_id));
-- 10
CREATE UNIQUE INDEX ix_ack_mid_upper_uid
ON ack (msg_id, user_id_upper);
-- 11
DROP INDEX ix_ack_mid_uid ON ack;上面是一个精简的语句版本,这些语句仍然只在Aurora上复制这个问题,并且仍然在'vanilla‘MySQL 5.7中工作(经过测试的brew install、RDS实例和来自Docker的mysql/mysql-server:5.7 )。语句1-6是初始安装语句,7-11是导致以下错误的迁移语句。
误差
ERROR 1553 (HY000): Cannot drop index 'ix_ack_mid_uid': needed in a foreign key constraint迄今为止的探索发现
Cannot drop index错误。Aurora在第7-10行中抛出此错误。问题陈述
造成这一问题的根本原因是什么?这是Aurora中的一个bug,还是已知版本的差异,还是我们端潜在的Aurora错误配置?
报表7-10如何影响指数ix_ack_nid_uid是否会在MySQL 5.7中下降,而它们似乎没有触及该指数呢?为什么同样不影响极光呢?
发布于 2021-03-10 05:11:13
我也遇到了同样的问题。无论如何,我首先删除外键,然后删除索引,从而解决了这个问题。
为了解决这个问题,我的一位朋友( said )说,这看起来像是Bug #17449901 in MySQL Aurora中提到的一个现有问题。
使用foreign_key_checks=0,InnoDB允许删除外键约束所需的索引,将表放入不一致的表中,并导致表加载时发生的外键检查失败。InnoDB现在可以防止删除外键约束所需的索引,即使使用foreign_key_checks=0也是如此。在删除外键索引之前,必须删除外键约束。
这可能是问题的原因,因为InnoDB现在阻止删除外键约束所需的索引。
发布于 2021-03-17 01:16:56
尝试禁用sql文件开头的键检查。
SET FOREIGN_KEY_CHECKS=0;并在最后启用:
SET FOREIGN_KEY_CHECKS=1;https://stackoverflow.com/questions/66344502
复制相似问题