问题标签 [mariadb-10.3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
325 浏览

sql - 将表转换为带有长文本列的 JSON 数组

我正在使用 mariaDB 10.3,我有一个表:

有行:

我正在尝试编写将表作为JSON对象返回的查询。到目前为止我有

但这会返回:

这不是一个正确的 JSON。我应该改变什么以获得parameters正确的格式?

我想得到的是:

谢谢

0 投票
0 回答
82 浏览

innodb - 一个 galera 节点出现故障并开始将错误 innodb 报告为未知或不受支持的引擎

我的一个节点已关闭,它也是节点 A 的捐赠者,因此我从节点 A 配置中删除了关闭节点作为捐赠者。这样节点 A 就不必等待节点出现。

由于最初出现故障的节点存储速度慢且网络连接速度慢,我决定将其删除。当我删除它并重新启动集群时,即使节点 A 没有出现,在重新启动时它开始报告错误:

为什么它一直在工作时现在开始报告未知/不受支持的存储引擎 innodb?

顺便说一句,我使用了另一个第三个节点来引导(启动 Galera_new_cluster)。

0 投票
1 回答
122 浏览

datetime - 在 MariaDB 中,如何选择每天最后一个事件并为其创建索引?

我有一个会议表,每个会议都有一个开始和结束时间,表示为一个整数 Unix 时间戳,以及参加这次会议的一群人。一旦他们当天的所有会议结束,我需要向每一组人发送通知。为此,我需要找到(天,组)的每个组合的最后一次会议。我已经根据我的情况调整了这个答案,它有效:

但是,尽管尝试了不同的索引组合,但我似乎找不到一个可以使该查询不执行全表扫描的组合。结果EXPLAIN总是如下:

我的表是这样定义的:

我在这里需要什么索引组合和什么查询?我看到的一个解决方案是创建一个索引列来存储事件的日期,可能是某种序数,虽然这是一个选项,但我希望尽可能避免它,以免在单个中包含冗余值排。

0 投票
1 回答
214 浏览

regex - MariaDB 中的正则表达式替换

我正在尝试匹配 SMF 论坛中的内部链接,并将 BBC 标记从url转换为iurl,以便这样的链接:

[url=https://www.translatum.gr/forum/index.php?topic=989144.0]κατ' ἐπιταγήν -> by way of command[/url]

会变成 :

[iurl=https://www.translatum.gr/forum/index.php?topic=989144.0]κατ' ἐπιταγήν -> by way of command[/iurl]

我在 PhpMyAdmin 上尝试过这样的事情(使用 MariaDB 10.3)

UPDATE smf_messages SET body = REGEXP_REPLACE(body, '(\[url=https:\/\/www\.translatum\.gr)(.*?)(\[\/url\])', '[iurl=https://www.translatum.gr\\2[/iurl]') WHERE ID_TOPIC = 987873

尽管似乎在 regex101 中的测试中起作用,但在 SQL 上给出了垃圾输出(即,它被链接及其文本的多次迭代替换)。我已将此用于语法参考

0 投票
1 回答
218 浏览

mysql - 根据上一行中的值计算 MariaDB 中的新值

在 MariaDB 10.3 中,我有一个这样的表:

ID 日期
1 2020-01-01 120
1 2020-02-01 130
1 2020-03-01 140
1 2020-04-01 150
1 2020-05-01 160
1 2020-06-01 170

我需要在每个日期之后计算剩余的总和。像这样的东西。我需要将计算作为 MariaDB 中的查询进行。

ID 日期 还款前剩余总金额
1 2020-01-01 120 870
1 2020-02-01 130 750
1 2020-03-01 140 620
1 2020-04-01 150 480
1 2020-05-01 160 330
1 2020-06-01 170 170

我找到了一些接近的解决方案,但无法以适当的方式更改它们以满足我的需要。任何想法,将不胜感激。

最后一列的逻辑是:

  1. 第一个值是欠款总额 (120+130+140...)
  2. 每个下一个值都是根据该数字减去同一行的 sum 列中的值计算得出的,即
  • 870-120=750;
  • 750-130=620;
  • 620-140=480;等等

我的尝试是:

  1. 第一个接近但没有工作的查询:

结果是:

ID 日期 还款前剩余总金额
1 2020-01-01 120 120
1 2020-02-01 130 250
1 2020-03-01 140 380
1 2020-04-01 150 520
1 2020-05-01 160 670
1 2020-06-01 170 840

即它有点颠倒了结果。并用下一行的值增加值。

  1. 另一个查询与 LAG 函数有关,但减法部分令人失望

结果:

ID 日期 还款前剩余总金额
1 2020-01-01 无效的
1 2020-02-01 10
1 2020-03-01 10
1 2020-04-01 10
1 2020-05-01 10
1 2020-06-01 10

它减去:

  • 130-120=10;
  • 140-130=10;
  • 150-140=10;等等
0 投票
0 回答
476 浏览

mysql - 如何使用 phpMyAdmin 和 MariaDB 10 在 NAS (Synology DS120J) 上设置 MySQL 服务器来运行 Django 3 项目?

我很欣赏这个主题非常具体的事实,但我一直在努力寻找有关此类设置的文档。我正在使用 Python 3.9 而不是 SQLite3 开发 Django 3 项目,该应用程序将使用托管在 Synology DS120J NAS 上的 MySQL 服务器,这是通过 phpMyAdmin 和 MariaDB 10 完成的。基本上,我的目标是运行 Django 3来自我的 PC (Windows 10) 的应用程序,以及来自 NAS 的 MySQL 服务器。两者共享同一个本地网络。有人使用类似的设置吗?如果可以,请您提供一些指导吗?目前这里是来自应用程序的 settings.py 文件的 DATABASES 部分:

我使用以下命令启动应用程序:python manage.py runserver 192.168.0.2:[NAS 的端口号]。这样做时,我收到以下错误消息:

我已搜索此错误消息,但没有得到任何有用的信息,因为我不确定是否有任何反馈涉及使用 NAS。有人可以帮忙提供有趣的链接或描述吗?先感谢您。

0 投票
2 回答
92 浏览

mysql - 多个 id 的多 SELECT 查询

我执行SELECT来决定是否向用户发送通知。( 10.3.23-MariaDB )

第一部分检查是否有 0 个未读通知,如果 0 则不需要进一步的SELECT

如果没有,我会计算自上次相等通知以来用户有多少个通知(在这种情况下,总是有一个可以计数),并将其与未读的数字user_sess.unread_noti进行核对

现在我想检查多个用户是否有相同的通知,并通过对多个用户执行SELECT来提高效率,例如这样的(不正确的示例):

计数的 notification.id 对于多个用户可以是相同的,因为我批量插入它们,所以它们将占据相同的“位置”。

0 投票
1 回答
35 浏览

php - PHP MySQL - 为什么存储过程调用在 PHP 代码中意外结束

我的存储过程有一个奇怪的问题。我编写了一个在 MySQL 控制台和 MySQL GUI 工具上正确运行的存储过程:SqlYog。但它不适用于 PHP 代码。是否有任何特定设置可以在 PHP 中运行 SP?在我的存储过程中,我使用了 MySQL 会话变量。

我的环境:Windows 10 x64, PHP 7.3, MariaDB: 10.4.13-MariaDB

我附上了我的 SP 代码的一部分。

问题块如下:

这是一个准备好的声明。

PHP 调用:mysqli_query($this->conn, "CALL sp_update_daily_buying('2021-01-21');")

我在循环中运行这个选择。执行后EXECUTE stmt1 USING @p_number, @p_quantitySum;,我的存储过程在第三次执行后结束。那是在循环中,2次都可以,但是在第3次执行之​​后,SP就结束了。

正如我上面提到的,在 GUI 工具和 MySQL 控制台中,它可以正常工作(循环正确结束)。

有什么具体的设置吗?

提前致谢!

0 投票
3 回答
47 浏览

mysql - SQL查询将两列合二为一

水果 水果
黄瓜 苹果
苹果 芒果
橙子 葡萄
葡萄 苹果

我的输出需要是总水果的数量。

这是我尝试过的不正确的方法,该怎么做?任何想法?

0 投票
1 回答
230 浏览

mariadb - 无法更新表的列,但在 phpmyadmin 中使用更新 sql 查询后工作

当用户尝试更新他们的设置时,我插入了我的审计日志表userUpdateLog,它调用了一个插入前触发器来插入userProfilesusers基于列插入到各自的表中。

但是对于nickName我在创建表并拥有数据后添加的列userProfiles,它不会通过使用查询的触发器进行更新

但是当我在 phpmyadmin 中使用写入值执行查询时

它可以工作,并且在该特定行的列中有数据之后,触发器可以工作并且能够在插入userUpdateLog并执行触发器后更新该行,

其他行遇到相同的问题,直到我通过 phpmyadmin 手动插入。

需要通过 phpmyadmin 手动插入才能工作的这个问题的原因是什么?

在更改表添加列等之后我需要做些什么来重新加载/刷新表,以便UPDATE userProfiles SET nickName = NEW.newNickName WHERE userID = NEW.userID查询可以在 php 文件或触发器中工作。提前致谢!

更新:我刚刚在表中添加了一个新列,userProfiles我无法在该列中添加值/输入,但是在创建表时定义了任何列。

更新 - 2我创建了一个新表,使用相同的列、fks 和所有调用usersProfiles,并且该表也没有更新,直到我通过 phpmyadmin 编辑了该列。我还注意到,当我在 phpmyadmin 中模拟查询时,它说matched 0 row,但查询在执行后工作。

数据库中有 18 个表会是问题吗?找到错误/问题的任何帮助或提示都会很棒!