问题标签 [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.
django - MariaDB:ALTER TABLE 命令适用于一张表,但不适用于另一张表
我在 MariaDB 数据库中有两个表(Django 模型):coredb_vsatservicerate
和coredb_simservicerate
.
和
对于coredb_simservicerate
此命令工作正常:
对于coredb_vsatservicerate
这个类似的命令会引发错误:
我查看了 MariaDB 的文档,但仍然不知道为什么。
你能帮助我吗?这是 MariaDB 中的错误吗?
编辑:
编辑 2:用 SHOW CREATE TABLE 输出替换 DESCRIBE 输出。
编辑 3:如果我从 中删除检查约束year
,上述ALTER TABLE
似乎有效。
这是 MariaDB 10.3 中的错误吗?
sql - 如果未提供不受影响的值,则插入重复键失败?
今天我在 MariaDB 10.3.29 中遇到了一个奇怪的行为。
这是有问题的表格:
这是一个相对简单的表。
这是当前失败的 SQL 查询:
查询失败并出现错误Field 'friendly' doesn't have a default value
显然,友好不是上述查询中要更新的列之一。奇怪的是,friendly 甚至不是 null (当前值为1
),没有任何行friendly 没有值,我们甚至没有更新查询中的这一列。
我知道这与NOT NULL
约束有关,但该值当前不是 NULL,我们没有更新它以使其为 NULL - 事实上,我们根本没有触及该列及其非空值无论如何——那它为什么要抱怨这个呢?
我继续修改查询以删除其他列,如果没有提供每一列,它基本上会发牢骚。
这种行为看起来很奇怪,几乎就像它试图删除行然后使用提供的更新值添加数据一样。常规UPDATE ... SET
查询工作正常。
我找不到有关此行为的任何文档。为什么查询会这样?有什么方法可以让它正常工作,还是应该ON DUPLICATE KEY UPDATE
用常规的 3 部分 SQL 查询换掉UPDATE
?
php - Magento 2.3 多源错误库存
在我的团队中,我们刚刚继承了一个只有一个默认库存的Magento 2.3设置,我们希望开始使用Multi Source直接在 Magento 中管理库存,因此我们为我们运送产品的每个仓库分配一个新的 Source(今天的库存管理是 100 % 手动噩梦)。
我们设置了不同的来源,并将这些来源与我们唯一的主网站相关联,创建了一个新的股票。该操作会自动取消默认股票与我们的主网站的关联。似乎禁止将新来源添加到默认库存(我不知道确切原因)。
在特定产品的设置中,我们然后添加所有来源(默认来源和新来源),并确保在每个来源的所有可用数量中,总数大于零。这在“每个来源的数量”和“可销售数量”中得到了正确反映。
但是,前台商店似乎只考虑了 Default Source Qty 值。我们添加的其他来源未添加到计算中。我们观察到,如果我们将该产品的默认来源数量设置为零,则该产品在网站上显示为缺货。不仅如此,如果我们从该产品中删除默认来源,结果是相同的,但保留具有正数量的其他来源。在任何情况下,它在 Admin 中的 Total 和 Salable 数量仍然是正数。
我们期望的行为是网站中显示的库存是正确的,并且计算得出该特定产品的不同来源的所有库存。
刷新缓存和重新索引不会改变行为。
新的 Sources 出现在inventory_source表中。表inventory_source_item正确显示了sku 的新条目和正确数量。
我已经检查了手册和其他多个来源,但似乎不清楚如何解决这个问题。如果有人可以让我对此有所了解或澄清我们尝试做的事情是否没有意义,我将不胜感激:)
非常感谢!
mariadb - 基于列的累积 SUM 限制获取行的高性能方法
是否可以在不进行全表扫描的情况下根据列的累积 SUM 停止获取行?如果是这样,怎么做?
例子
假设您有一张表,卖家可以在其中列出待售商品。为简单起见,假设表包含字段quantity
和price
.
ID | 数量 | 价格 |
---|---|---|
1 | 2 | 5 |
2 | 4 | 3 |
3 | 3 | 4 |
4 | 1 | 1 |
5 | 4 | 3 |
您想购买 6 件商品,并且需要足够的行来覆盖 6 件商品,按最低价格排序。在这种情况下,您需要第 4 行(共 1 行)、第 2 行(共 5 行)和第 5 行(共 9 行,足以覆盖 6 行)。
问题
我尝试了很多东西,包括 JOINS、窗口函数和用户变量,但都没有成功。它可以工作,但是在处理数百万行时速度很慢。每个解决方案似乎都在为与 WHERE 子句匹配的每一行创建一个累积总和,然后选择累积总和足够多的行。这种方法具有可怕的性能。
使用多行获取 X 行,将它们添加到代码中,并在需要时在循环中请求 X 更多以覆盖数量时,有时会快得多。这确实带来了与并发访问相关的其他问题,并以这种方式降低了性能。
有没有办法用 MariaDB 做类似的事情?如果没有,有什么想法可以加快速度吗?
关于相同功能但没有性能部分的问题: 通过行值的总和限制 SQL
mysql - 从具有 AND NOT 条件的 NN 关系中进行选择
我对这个标题不太满意,但这是我能做到的最好的。道歉。
因此,在我的数据库 (mariadb 10-3) 中,我有一个books
表、一个authors
表和一个常规的 ol'books_authors
连接表将两者联系在一起。此数据库中的许多书籍都有多个作者,因此它们由每个作者的联结表中的多行表示。
该应用程序有一个相对复杂的搜索表单,用户可以(或应该能够)添加/删除多个参数和搜索逻辑。例如,您可以添加一个参数以从标题中排除字符串。或来自作者姓名。
现在,在排除作者姓名的情况下按标题名称搜索的查询如下所示。它是简化版本,通常它有更多的 WHERE 条件,引用其他几个表。虽然我认为相关的部分都在那里:
这仅适用于只有一位作者的书籍。否则它是无用的,因为它只消除了其中一位作者。例如,如果一本书是由两个名叫亚伯拉罕和弗兰克的家伙写的,如果您搜索标题为“巴比伦”但没有作者“弗兰克”的书,您仍然会得到亚伯拉罕和弗兰克写的《巴比伦的灰烬》作为查询过滤掉了弗兰克,但是这本书仍然通过亚伯拉罕得到。
所以问题是,当至少有一个作者被过滤掉时,我如何修改上面的查询以从搜索中排除一本书?
该表单的控制器有一长串 if 语句(这是一段相对较旧的代码,最近由我负责),通过根据参数向查询添加各自的位来“组装”搜索查询的请求。如果可能的话,我想避免从头开始写整个事情。
mysql - MySQL:从 n 条记录中选择 1 列值以构建具有 n 列值的 1 条记录(MariaDB 10.3.23)
我正在尝试从几个通用表中获取某些数据,以便我可以将集合组合成一个客户的新表。在一个表“robot”中,模式一次指定一个“component_id”列。总是有 16 个最大可能的唯一 'component_id' 值(1 到 16),它们通常一次插入一个新记录。
我想组合与我的机器人关联的所有“component_id”值,并将它们插入到一行中,这将用于为我正在尝试开发的特定关系一次指定所有组件名称。
我正在做的是提取包含 1 个列值的 N 行,全部构建具有 N 列值的 1 行。我能想到的最好的形容词是转置。我已经计划在我的查询中使用一些内部连接,所以我更喜欢在语法上兼容的东西。
我正在使用 MariaDB 10.3.23。
谢谢!
mysql - MySQL 语法混淆 - 合并简单数据以实现优雅的单行插入
我正在构建一个 MySQL 表来为客户聚合一组特定信息。我已经使用共享键/列的记录上的简单命令成功地组装和过滤了其中的大部分内容INNER JOIN
,但是数据的旋转/转置,即使是固定大小,仍然给我的查询造成一些语法混乱。该表的架构t_snapshots
如下所示:
简单地说,我想从中选择最近更新的值t_other_data0.ch[n]
发送到,并为每个唯一的发送到t_snapshots.ch[n]_val
选择最近更新的 id 。与列的 n 值相关:t_id_pool.unit_id
t_id_pool.channel_num
t_snapshots.ch[n]_id
t_id_pool.channel_num
t_snapshots.ch[n]_val
t_other_data0
--EDIT--:理想情况下,从源表中查找最新unit_id
值t_id_pool
的样本数据channel_num=1,2,3,4
并输出到表t_snapshots
:
收集最新的过程数据t_other_data0
。在这种情况下,id
将选择 5-8 的行,因为它们跨越所有不同value_type
的最新timestamp
.:
因为这些永久通道会改变它们所绑定的临时设备,所以我们使用 latest from确定unit_id
每个通道的电流:channel_num
unit_id
t_id_pool
输出到t_snapshots
:
mysql - 在 MariaDB 存储过程中使用 LOOP 时出现错误已解决
我有以下简单的测试程序:
使用它调用时call testProcess()
会产生以下错误:
我不知道如何进一步缩小范围!我对 MariaDb 和 MySql 还很陌生,但我不知道在哪里找出问题所在。任何帮助将不胜感激。
我正在使用 MariaDB 10.3.30
编辑:15 小时后,由于系统的变幻莫测,它现在可以正常工作了!编程之神有时会如此讨厌!