mysql - 向表中添加 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 个完全不同的结果。
- 使用 dgForge studio 2020 for mySQL,我看到重复的表和表的其他列都是重复的。(但如果我们尝试查看数据本身,列似乎没有重复)
- 使用 dataGrip,我在任何地方都看不到任何重复的表或重复的列
我真的不明白这里发生了什么。是否有任何想法可能来自此类问题,或者可以采取什么措施来解决这种奇怪的行为?无论如何,非常感谢您的帮助!
解决方案
问题的快速解决方法:重新启动 MySQL Azure DB,重复项就消失了。InnoDB 在重启期间有一个修复机制。
它没有解决问题,但至少重复项消失了,您可以使用数据库。
对于问题本身,在和我的技术人员做了很多研究后,我们认为这是微软 Azure 的问题,并报告给了微软。我会尽快发布答案。
推荐阅读
- cmake - 在针对 MinGW-w64 的 Windows 下使用 CMake 和 Clang
- javascript - 操作嵌套数据结构
- python - 将键为字符串、值为列表的字典转换为 pandas DataFrame
- bash - 如何使 Oracle sqlplus 命令行实用程序非交互式?
- apache-kafka - Kafka 连接中的 ACL 配置不起作用
- python - 创建两个新列,其中第二个是剩余的
- python - 加载 MySQLdb 模块时出错 - Windows 上的 Python 3.7
- python - 删除 CSV 文件中的索引列
- java - 使用Java中的Jackson将具有不同类型值的映射序列化为JSON
- ios - SwiftUI iOS 14 中 DatePicker 的居中对齐