我正在使用maria db。当我尝试使用在线ddl选项(lock = none,Algorithm = inplace)删除索引时,我收到语法错误。 DROP INDEX idx_new ON帖子ALGORITHM = INPLACE LOCK = NONE; 错误1064(42000):您的SQL语法有错误;检查与MariaDB服务器版本对应的手册,以便在第1行“ALGORITHM = INPLACE LOCK = NONE”附近使用正确的语法
据我了解文档,最新的mariadb应该能够在线运行这些DDL。
我试过这个ddl:
DROP INDEX idx_new ON posts ALGORITHM=INPLACE LOCK=NONE;
以及那些:
DROP INDEX idx_new ON posts LOCK=NONE ALGORITHM=INPLACE;
DROP INDEX idx_new ON posts LOCK=NONE;
这里有一些背景信息:
OS: macOS Sierra 10.12.3
我通过brew安装了mysql(我不记得该版本),然后用mariadb替换它(卸载并通过brew安装)。
> mysql --version
mysql Ver 15.1 Distrib 10.2.5-MariaDB, for osx10.12 (x86_64) using readline 5.1
奇怪的是:当我使用我的sql ui(Sequel Pro)时,它会在标题中显示我(MySQL 5.5.5 - 10.2.5-MariaDB)。
还有一些来自MySQL 5.5.5的工件吗?
MariaDB 10.2.5无法在线运行DROP INDEX吗?
答案 0 :(得分:1)
DROP INDEX
中的语法错误是已知错误https://jira.mariadb.org/browse/MDEV-12572,语法不足。解决方法是通过常规ALTER
语句:
ALTER TABLE posts DROP INDEX idx_new, ALGORITHM=INPLACE, LOCK=NONE;
关于5.5.5
前缀 - 它不是5.5工件的指示。该前缀与10.x发行版本一起引入,用于处理服务器和客户端未将10.x识别为有效版本并拒绝与其通信(有关详细信息,请参阅https://jira.mariadb.org/browse/MDEV-4088)。
MariaDB服务器和客户端剥离前缀,但第三方应用程序不会。