是否有可能使用由ha_sequence插件提供的MariaDB in MySQL (https://mariadb.com/kb/en/library/sequence-storage-engine/)?还是为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;我在Debian9上使用了MySQL CommunityServer5.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的源代码。所以我放弃了,现在我使用上面描述的查询。
发布于 2018-09-14 08:11:06
不,MariaDB插件只适用于MariaDB。
发布于 2018-10-05 03:40:08
一次,用数字(和一个PRIMARY KEY)构建一个百万行表。
从今以后,JOIN到那个表来获取数字(并使用BETWEEN或其他方法限制它)。
https://stackoverflow.com/questions/52298241
复制相似问题