问题标签 [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.
sql - 将表转换为带有长文本列的 JSON 数组
我正在使用 mariaDB 10.3,我有一个表:
有行:
我正在尝试编写将表作为JSON
对象返回的查询。到目前为止我有
但这会返回:
这不是一个正确的 JSON。我应该改变什么以获得parameters
正确的格式?
我想得到的是:
谢谢
innodb - 一个 galera 节点出现故障并开始将错误 innodb 报告为未知或不受支持的引擎
我的一个节点已关闭,它也是节点 A 的捐赠者,因此我从节点 A 配置中删除了关闭节点作为捐赠者。这样节点 A 就不必等待节点出现。
由于最初出现故障的节点存储速度慢且网络连接速度慢,我决定将其删除。当我删除它并重新启动集群时,即使节点 A 没有出现,在重新启动时它开始报告错误:
为什么它一直在工作时现在开始报告未知/不受支持的存储引擎 innodb?
顺便说一句,我使用了另一个第三个节点来引导(启动 Galera_new_cluster)。
datetime - 在 MariaDB 中,如何选择每天最后一个事件并为其创建索引?
我有一个会议表,每个会议都有一个开始和结束时间,表示为一个整数 Unix 时间戳,以及参加这次会议的一群人。一旦他们当天的所有会议结束,我需要向每一组人发送通知。为此,我需要找到(天,组)的每个组合的最后一次会议。我已经根据我的情况调整了这个答案,它有效:
但是,尽管尝试了不同的索引组合,但我似乎找不到一个可以使该查询不执行全表扫描的组合。结果EXPLAIN
总是如下:
我的表是这样定义的:
我在这里需要什么索引组合和什么查询?我看到的一个解决方案是创建一个索引列来存储事件的日期,可能是某种序数,虽然这是一个选项,但我希望尽可能避免它,以免在单个中包含冗余值排。
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 上给出了垃圾输出(即,它被链接及其文本的多次迭代替换)。我已将此用于语法参考
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 |
我找到了一些接近的解决方案,但无法以适当的方式更改它们以满足我的需要。任何想法,将不胜感激。
最后一列的逻辑是:
- 第一个值是欠款总额 (120+130+140...)
- 每个下一个值都是根据该数字减去同一行的 sum 列中的值计算得出的,即
- 870-120=750;
- 750-130=620;
- 620-140=480;等等
我的尝试是:
- 第一个接近但没有工作的查询:
结果是:
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 |
即它有点颠倒了结果。并用下一行的值增加值。
- 另一个查询与 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;等等
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。有人可以帮忙提供有趣的链接或描述吗?先感谢您。
mysql - 多个 id 的多 SELECT 查询
我执行SELECT来决定是否向用户发送通知。( 10.3.23-MariaDB )
第一部分检查是否有 0 个未读通知,如果 0 则不需要进一步的SELECT。
如果没有,我会计算自上次相等通知以来用户有多少个通知(在这种情况下,总是有一个可以计数),并将其与未读的数字user_sess.unread_noti进行核对
现在我想检查多个用户是否有相同的通知,并通过对多个用户执行SELECT来提高效率,例如这样的(不正确的示例):
计数的 notification.id 对于多个用户可以是相同的,因为我批量插入它们,所以它们将占据相同的“位置”。
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 控制台中,它可以正常工作(循环正确结束)。
有什么具体的设置吗?
提前致谢!
mysql - SQL查询将两列合二为一
水果 | 水果 |
---|---|
黄瓜 | 苹果 |
苹果 | 芒果 |
橙子 | 葡萄 |
葡萄 | 苹果 |
我的输出需要是总水果的数量。
这是我尝试过的不正确的方法,该怎么做?任何想法?
mariadb - 无法更新表的列,但在 phpmyadmin 中使用更新 sql 查询后工作
当用户尝试更新他们的设置时,我插入了我的审计日志表userUpdateLog
,它调用了一个插入前触发器来插入userProfiles
并users
基于列插入到各自的表中。
但是对于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 个表会是问题吗?找到错误/问题的任何帮助或提示都会很棒!