是否可以在 MySQL ( https://mariadb.com/kb/en/library/sequence-storage-engine/ ) 中使用 MariaDB 提供的 ha_sequence 插件?或者 MySQL 是否有类似的插件?我想在一个简单的行中列出两个数字之间的序列,而不需要过程、函数或表格。目前,我对我的序列使用此查询或解决方法,这是我发现的变体 here :
select (h*100+t*10+u+1) x from
(select 0 h union select 1 union select 2 union select 3 union select 4 union
select 5 union select 6 union select 7 union select 8 union select 9) A,
(select 0 t union select 1 union select 2 union select 3 union select 4 union
select 5 union select 6 union select 7 union select 8 union select 9) B,
(select 0 u union select 1 union select 2 union select 3 union select 4 union
select 5 union select 6 union select 7 union select 8 union select 9) C
where (h*100+t*10+u+1) between 1 and 366
order by x;
我正在 Debian 9 上使用 MySQL Community Server 5.7.23。我已经尝试将插件文件从 MariaDB 复制到我的 MySQL 服务器并安装它,但没有成功。我猜它与 MySQL 不兼容,因为它是 MariaDB 的插件。这是我尝试过的命令:
mysql> install plugin sequence soname 'ha_sequence.so';
ERROR 1126 (HY000): Can't open shared library '/usr/lib/mysql/plugin/ha_sequence.so' (errno: 2 /usr/lib/mysql/plugin/ha_sequence.so: undefined symbol: _ZN7handler11print_errorEim)
编辑(2018-09-17):
在接受答案之前,我还尝试编译 MySQL 的插件源代码。我是半成功的,因为我设法通过一些修改来编译它。但是,该插件需要 MySQL 中的类中的一些功能(函数),而这些功能在 MySQL 源代码中不存在。所以它不起作用。添加这些功能或直接在插件中实现解决方法,或根据我的需要修改 MySQL 源代码,会花费我很多时间。我真的不想深入研究 MySQL 和/或 MariaDB 的源代码。所以我放弃了,现在我使用上述查询。
最佳答案
不可以,MariaDB 插件仅适用于 MariaDB。
关于mysql - MySQL 中 ha_sequence 插件的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52298241/