mysql - 不支持 LOCK=NONE。原因:添加列列...虚拟,添加索引(列)。尝试 LOCK=SHARED
问题描述
所以我需要添加一个基于'created_at'时间戳的日期索引而不锁定表,这是我尝试的:
mysql> ALTER TABLE `datebase1`.`table2` ADD INDEX `date_idx` ((date(`created_at`))), ALGORITHM=INPLACE, LOCK=NONE;
但是有一个sql错误:ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: ADD COLUMN col...VIRTUAL, ADD INDEX(col). Try LOCK=SHARED.
由于它是一个包含 50M 行的巨大表,因此一个简单的 alter index 命令(例如)ALTER TABLE `datebase1`.`table2` ADD INDEX `date_idx` ((date(`created_at`)));
将锁定该表并显示waiting for table metadata lock
其他正在运行的查询的错误。
我应该怎么做才能完成它(不锁定桌子)?
顺便说一句,我使用的是 Mysql 8.0。
解决方案
推荐阅读
- unit-testing - 如何修复 Vuetify 单元测试中的“ReferenceError: requestAnimationFrame is not defined”
- coldfusion - 是否可以将函数作为参数传递给 ColdFusion 中的其他函数?如果是怎么办?
- c - C 中的 bsearch() 在新的 gcc 版本 7.4.0 中给出分段错误
- python-3.x - 子程序后变量不保存
- azure - VS403091:您指定了一个已经添加的状态 xxx
- javascript - Flask Jinja2 模板语法与 AngularJS 冲突 (jinja2.exceptions.UndefinedError:)
- mysql - 计算每行中具有相同日期的行数
- javascript - 循环遍历 Vuejs 模板上的对象数组
- python - 如果输入的内容与 Tkinter 中文本文件中的内容相同,如何制作一个移动到另一个窗口的输入框
- parsing - 如何在 Rust 中为我自己的解析器编写组合器?