首页 > 解决方案 > 向表中添加 SQL 列会复制该表

问题描述

在一个mySQL数据库上,出现了一个奇怪的现象。当我尝试向表中添加列时,会添加列,但之后会复制表。如果我们尝试添加其他列,它会不断重复表,我不知道如何修复它或它可能来自哪里。SQL DB 托管在 Azure 上

这是尝试添加列之前的情况:

SHOW tables;

('annotations',)
('dicoms',)
('image',)
('patient',)
('procedure_biopsy',)
('series',)

DESCRIBE annotations;

('nb_lesions', 'int(11)', 'YES', '', None, '')
('id_annotation', 'int(11)', 'NO', 'PRI', None, 'auto_increment')
('id_annotator', 'varchar(50)', 'YES', '', None, '')
('id_annotation_request', 'int(11)', 'YES', '', None, '')
('comments_to_annotator', 'text', 'YES', '', None, '')
('status', 'varchar(50)', 'YES', '', None, '')
('location_output', 'varchar(50)', 'YES', '', None, '')
('date_saved', 'date', 'YES', '', None, '')
('version', 'varchar(50)', 'YES', '', None, '')
('nb_bounding_boxes', 'int(11)', 'YES', '', None, '')
('purpose', 'varchar(50)', 'YES', '', None, '')
('id_image', 'int(11)', 'YES', '', None, '')
('type_annotation', 'varchar(50)', 'YES', '', None, '')

现在,如果我发送这个请求:

ALTER TABLE annotations ADD test_column varchar(50);

请求成功执行,并且使用“DESCRIBE annotations;”,我们得到:

('nb_lesions', 'int(11)', 'YES', '', None, '')
('id_annotation', 'int(11)', 'NO', 'PRI', None, 'auto_increment')
('id_annotator', 'varchar(50)', 'YES', '', None, '')
('id_annotation_request', 'int(11)', 'YES', '', None, '')
('comments_to_annotator', 'text', 'YES', '', None, '')
('status', 'varchar(50)', 'YES', '', None, '')
('location_output', 'varchar(50)', 'YES', '', None, '')
('date_saved', 'date', 'YES', '', None, '')
('version', 'varchar(50)', 'YES', '', None, '')
('nb_bounding_boxes', 'int(11)', 'YES', '', None, '')
('purpose', 'varchar(50)', 'YES', '', None, '')
('id_image', 'int(11)', 'YES', '', None, '')
('type_annotation', 'varchar(50)', 'YES', '', None, '')
('test_column', 'varchar(50)', 'YES', '', None, '')

但是当我们尝试运行“SHOW tables;”时问题就来了。当它返回时:

('annotations',)
('annotations',)
('dicoms',)
('image',)
('patient',)
('procedure_biopsy',)
('series',)

表注释重复。

我还尝试使用 dgForge 和 dataGrip 检查数据的外观,我从这些数据库浏览器中得到了 2 个完全不同的结果。

我真的不明白这里发生了什么。是否有任何想法可能来自此类问题,或者可以采取什么措施来解决这种奇怪的行为?无论如何,非常感谢您的帮助!

标签: mysql

解决方案


问题的快速解决方法:重新启动 MySQL Azure DB,重复项就消失了。InnoDB 在重启期间有一个修复机制。

它没有解决问题,但至少重复项消失了,您可以使用数据库。

对于问题本身,在和我的技术人员做了很多研究后,我们认为这是微软 Azure 的问题,并报告给了微软。我会尽快发布答案。


推荐阅读