AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-0

's questions

Martin Hope
anon
Asked: 2025-03-14 12:52:13 +0800 CST

如何在 Postgres 中得出这个观点?

  • 6

假设我们有下表:

 id |     entry_time      |  state  
----+---------------------+---------
 d1 | 2024-09-20 12:01:01 | Open
 d1 | 2024-09-20 12:01:20 | EnRoute
 d1 | 2024-09-20 12:02:40 | OnTrip
 d1 | 2024-09-20 12:04:10 | Open

我们希望最终的视图如下所示(预期输出):

| id | start_minute        | open_time | enroute_time | ontrip_time |
|----|---------------------|-----------|--------------|-------------|
| d1 | 2024-09-20 12:01:00 | 19        | 40           | 0           |
| d1 | 2024-09-20 12:02:00 | 0         | 40           | 20          |
| d1 | 2024-09-20 12:03:00 | 0         | 0            | 60          |
| d1 | 2024-09-20 12:04:00 | 50        | 0            | 10          |

计算视图(针对第一行)

  • open_time 为 19,因为驱动程序从 12:01:01 到 12:01:20 一直处于打开状态
  • enroute_time 为 40,因为驾驶员从 12:01:20 到 12:02:00 一直处于途中状态(直到 2024-09-20 12:02:40,下一个分钟标记)

我试图计算相同的内容,但不能 100%确定如何进一步进行:

  • 我有点困惑如何将时间戳字段拆分成分钟跟踪器

    • 我正在阅读有关聚合和日期时间函数的更多信息,并且可以使用 date_trunc 来实现对记录进行分类
  • 我正在尝试找出如何做类似数据透视表的事情,这可能有助于我们得出最终答案(以我有限的理解)

或者:

  • 我们需要根据状态找到每个分钟时段的比例,因此我们可以通过在将视图从当前表扩展到分钟标记后计算每个状态的开始和结束时间标记来实现这一点。这是个好主意吗?或者有更好的方法吗?

我的尝试:

select 
    id,
    state,
    date_trunc('minute', entry_time + interval '30 second') AS trunc_min,
    entry_time as curr_time,
    date_trunc('minute', entry_time + interval '60 second') AS ceil_min,
    LEAD(entry_time) over (PARTITION by id order by entry_time) as next_time,
    extract(epoch from (lead(entry_time) over (partition by id order by entry_time) - entry_time)) as duration
from (
    values 
    ('d1', '2024-09-20 12:01:01'::timestamp, 'Open'),
    ('d1', '2024-09-20 12:01:20'::timestamp, 'EnRoute'), 
    ('d1', '2024-09-20 12:02:40'::timestamp, 'OnTrip'),
    ('d1', '2024-09-20 12:04:10'::timestamp, 'Open')
) t("id", "entry_time", "state");

输出:

 id |  state  |      trunc_min      |      curr_time      |      ceil_min       |      next_time      | duration  
----+---------+---------------------+---------------------+---------------------+---------------------+-----------
 d1 | Open    | 2024-09-20 12:01:00 | 2024-09-20 12:01:01 | 2024-09-20 12:02:00 | 2024-09-20 12:01:20 | 19.000000
 d1 | EnRoute | 2024-09-20 12:01:00 | 2024-09-20 12:01:20 | 2024-09-20 12:02:00 | 2024-09-20 12:02:40 | 80.000000
 d1 | OnTrip  | 2024-09-20 12:03:00 | 2024-09-20 12:02:40 | 2024-09-20 12:03:00 | 2024-09-20 12:04:10 | 90.000000
 d1 | Open    | 2024-09-20 12:04:00 | 2024-09-20 12:04:10 | 2024-09-20 12:05:00 |                     |          

下一步该怎么办?

postgresql
  • 1 个回答
  • 40 Views
Martin Hope
Matthew
Asked: 2025-01-02 21:33:45 +0800 CST

Postgres 索引未用于今天的数据

  • 7
该问题已从 Stack Overflow迁移,因为它可以在数据库管理员 Stack Exchange 上找到答案。4 天前迁移 。

我有一张包含 3.5 亿条记录的 Postgres 表。我在该表上有 3 个索引:

historical_offers(recovery_date, uprn)
historical_offers(recovery_date, account_id)
historical_offers(recovery_date, individual_id)

如果我针对 24 小时之前的日期运行查询,它很快。但如果我针对今天(有时是昨天)运行查询,它就太慢了(0.05 毫秒 vs 300 毫秒)。

我的查询针对所有 3x 字段,并使用 3x 索引,然后针对日期 > 24 小时~ 快速完美地混合结果。因此,我认为这与 3x 字段上的 OR 条件需要使用 3x 索引无关。此外:如果我将查询修改为仅在 1 个字段上运行,我会遇到同样的问题。

目前的理论:

  • 索引的写入存在滞后(但我认为索引是在表更新的同时更新的)
  • 查询规划搞砸了,并使用了最小的索引(我读到过一些文章说这是 Postgres 的已知做法)。也许我需要添加提示来“强制”它使用正确的索引?

响应缓慢(今天):

EXPLAIN ANALYZE SELECT * FROM historical_offers.historical_offers WHERE (historical_offers.uprn = '1001005' OR historical_offers.account_id = 'SW1006' OR historical_offers.individual_id = '6752da6') AND (historical_offers.recovery_date = '2025-01-02');
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| QUERY PLAN                                                                                                                                                       |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Index Scan using historical_offers_date_individual_id_idx on historical_offers  (cost=0.57..8.56 rows=1 width=174) (actual time=346.467..346.467 rows=0 loops=1) |
|   Index Cond: (recovery_date = '2025-01-02'::date)                                                                                                               |
|   Filter: (((uprn)::text = '1001005'::text) OR ((account_id)::text = 'SW1006'::text) OR ((individual_id)::text = '6752da6'::text))     |
|   Rows Removed by Filter: 1470748                                                                                                                                |
| Planning Time: 0.099 ms                                                                                                                                          |
| Execution Time: 346.488 ms                                                                                                                                       |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
EXPLAIN 6
Time: 0.383s

快速查询(2天前):

EXPLAIN ANALYZE SELECT * FROM historical_offers.historical_offers WHERE (historical_offers.uprn = '1001005' OR historical_offers.account_id = 'SW1006' OR historical_offers.individual_id = '6752da6') AND (historical_offers.recovery_date = '2025-01-01');
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| QUERY PLAN                                                                                                                                                                                                                                                                                          |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Bitmap Heap Scan on historical_offers  (cost=13.88..78.14 rows=16 width=174) (actual time=0.031..0.032 rows=0 loops=1)                                                                                                                                                                              |
|   Recheck Cond: (((recovery_date = '2025-01-01'::date) AND ((uprn)::text = '1001005'::text)) OR ((recovery_date = '2025-01-01'::date) AND ((account_id)::text = 'SW1006'::text)) OR ((recovery_date = '2025-01-01'::date) AND ((individual_id)::text = '6752da6'::text))) |
|   ->  BitmapOr  (cost=13.88..13.88 rows=16 width=0) (actual time=0.030..0.030 rows=0 loops=1)                                                                                                                                                                                                       |
|         ->  Bitmap Index Scan on historical_offers_date_uprn_idx  (cost=0.00..4.62 rows=5 width=0) (actual time=0.013..0.013 rows=0 loops=1)                                                                                                                                                        |
|               Index Cond: ((recovery_date = '2025-01-01'::date) AND ((uprn)::text = '1001005'::text))                                                                                                                                                                                          |
|         ->  Bitmap Index Scan on historical_offers_date_account_id_idx  (cost=0.00..4.62 rows=5 width=0) (actual time=0.008..0.008 rows=0 loops=1)                                                                                                                                                  |
|               Index Cond: ((recovery_date = '2025-01-01'::date) AND ((account_id)::text = 'SW1006'::text))                                                                                                                                                                                      |
|         ->  Bitmap Index Scan on historical_offers_date_individual_id_idx  (cost=0.00..4.62 rows=5 width=0) (actual time=0.008..0.008 rows=0 loops=1)                                                                                                                                               |
|               Index Cond: ((recovery_date = '2025-01-01'::date) AND ((individual_id)::text = '6752da6'::text))                                                                                                                                                                     |
| Planning Time: 0.113 ms                                                                                                                                                                                                                                                                             |
| Execution Time: 0.054 ms                                                                                                                                                                                                                                                                            |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
EXPLAIN 11
Time: 0.026s
postgresql
  • 2 个回答
  • 28 Views
Martin Hope
Morten Madsen
Asked: 2024-12-19 16:22:11 +0800 CST

新服务器上的 DB2 RESTORE 影响原始服务器上的数据库

  • 5
该问题已从 Stack Overflow迁移,因为它可以在 Database Administrators Stack Exchange 上找到答案。 昨天已迁移 。

我的问题很简单:一台服务器上的 DB2 RESTORE 是否会影响备份来源的服务器?也就是说,DB2 RESTORE 命令是否可以联系原始服务器并执行“某些操作”,因为它将服务器名称和 DB 凭据存储在备份中?

我在 SERVER1 上使用 DB2 for Windows,v11.1,在 SERVER 2 上使用 v11.5 FP9。我这样做是为了在单独的服务器上使用生产数据建立测试系统。

事件经过如下:

  1. 我在 SERVER1 上做了 DB2 备份
  2. 我将备份文件复制到SERVER2
  3. 我在 SERVER2 上执行 DB2 RESTORE

当我在 SERVER2 上启动 DB2 RESTORE 时,在 SERVER1 上的 db2diag 中开始收到以下错误:

用户 db2admin 的密码验证失败,rc = -2146500483

我在这里很迷茫,暂时停止了这个过程。

我的一个理论是,两个 DB2 安装都位于同一个 SAN 上,也许 DB2 RESTORE 过于密集,以至于破坏了 SERVER1 DB2 的操作。

谢谢,莫滕。

windows
  • 1 个回答
  • 9 Views
Martin Hope
kls
Asked: 2024-05-02 20:09:19 +0800 CST

无法使用 Windows 身份验证连接到 SQL Server - “目标主体名称不正确。无法生成 SSPI 上下文”

  • 5
这个问题是从 Stack Overflow迁移来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。 昨天迁移了 。

我登录到 Windows 计算机并通过 GlobalProtect VPN 连接到另一个环境以连接 SQL Server。SQL Server 配置为仅允许 Windows 身份验证。但是,Windows 计算机位于一个域中,而 SQL Server 位于另一域中。当我尝试连接时,它会抛出错误:

目标主体名称不正确。无法生成 SSPI 上下文。
(框架 Microsoft SqlClient 数据提供程序)

这就是我试图实现这一目标的方式:

在此输入图像描述

但它返回错误为:

在此输入图像描述

详细信息如下:

在此输入图像描述

sql-server
  • 1 个回答
  • 15 Views
Martin Hope
Nuh Jama
Asked: 2024-04-26 21:57:39 +0800 CST

为什么我的平均值比使用 hyperfine 来基准查询性能的执行时间大得多?

  • 5
这个问题是从 Stack Overflow迁移来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。 昨天迁移了 。
                                               QUERY PLAN                                                                                        

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GroupAggregate  (cost=21267.11..21286.98 rows=461 width=31) (actual time=1.711..1.712 rows=1 loops=1)
Group Key: *
\-\>  Sort  (cost=21267.11..21268.91 rows=719 width=35) (actual time=1.564..1.591 rows=719 loops=1)
Sort Key: *
Sort Method: quicksort  Memory: 69kB
\-\>  Nested Loop  (cost=70.03..21233.00 rows=719 width=35) (actual time=0.483..1.454 rows=719 loops=1)
\-\>  Index Scan using *  (cost=0.28..8.30 rows=1 width=27) (actual time=0.017..0.018 rows=1 loops=1)
Index Cond: *
\-\>  Bitmap Heap Scan on measurements m  (cost=69.75..21213.91 rows=719 width=32) (actual time=0.240..0.994 rows=719 loops=1)
Recheck Cond: *
Filter: *
Rows Removed by Filter: 5241
Heap Blocks: exact=50
\-\>  Bitmap Index Scan on * (cost=0.00..69.57 rows=6018 width=0) (actual time=0.224..0.224 rows=5960 loops=1)
Index Cond: *
Planning Time: 0.697 ms
**Execution Time: 1.766 ms**
(17 rows)

                                              QUERY PLAN                                                                                        

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GroupAggregate  (cost=21267.11..21286.98 rows=461 width=31) (actual time=0.897..0.898 rows=1 loops=1)
Group Key: *
\-\>  Sort  (cost=21267.11..21268.91 rows=719 width=35) (actual time=0.795..0.831 rows=719 loops=1)
Sort Key: *
Sort Method: quicksort  Memory: 69kB
\-\>  Nested Loop  (cost=70.03..21233.00 rows=719 width=35) (actual time=0.178..0.718 rows=719 loops=1)
\-\>  Index Scan using * (cost=0.28..8.30 rows=1 width=27) (actual time=0.004..0.005 rows=1 loops=1)
Index Cond: *
\-\>  Bitmap Heap Scan on measurements m  (cost=69.75..21213.91 rows=719 width=32) (actual time=0.081..0.457 rows=719 loops=1)
Recheck Cond: *
Filter: *
Rows Removed by Filter: 5241
Heap Blocks: exact=50
\-\>  Bitmap Index Scan on * (cost=0.00..69.57 rows=6018 width=0) (actual time=0.073..0.073 rows=5960 loops=1)
Index Cond: * 
Planning Time: 0.336 ms
**Execution Time: 0.929 ms**
(17 rows)

                                              QUERY PLAN                                                                                        

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

GroupAggregate  (cost=21267.11..21286.98 rows=461 width=31) (actual time=0.873..0.873 rows=1 loops=1)
Group Key: *
\-\>  Sort  (cost=21267.11..21268.91 rows=719 width=35) (actual time=0.794..0.813 rows=719 loops=1)
Sort Key: *
Sort Method: quicksort  Memory: 69kB
\-\>  Nested Loop  (cost=70.03..21233.00 rows=719 width=35) (actual time=0.168..0.717 rows=719 loops=1)
\-\>  Index Scan using * (cost=0.28..8.30 rows=1 width=27) (actual time=0.004..0.004 rows=1 loops=1)
Index Cond: *
\-\>  Bitmap Heap Scan on measurements m  (cost=69.75..21213.91 rows=719 width=32) (actual time=0.071..0.457 rows=719 loops=1)
Recheck Cond: * 
Filter: *
Rows Removed by Filter: 5241
Heap Blocks: exact=50
\-\>  Bitmap Index Scan on * 
(cost=0.00..69.57 rows=6018 width=0) (actual time=0.063..0.063 rows=5960 loops=1)
Index Cond: *
Planning Time: 0.304 ms
**Execution Time: 0.903 ms**
(17 rows)

\---------------------------------------------------------------------------------------------------------------

Time (mean ± σ):      **98.1 ms** ±  28.1 ms    \[User: 30.7 ms, System: 11.1 ms\]Range (min … max):    75.6 ms … 129.5 ms    3 runs

\---------------------------------------------------------------------------------------------------------------  

我正在使用 hyperfine 对 PostgreSQL 中的查询性能进行基准测试。我使用--runs 3选项运行了三遍。正如您所看到的,我运行查询的所有 3 次的执行时间分别花费了 1.766、0.929 和 0.903 毫秒。我的问题是,为什么平均值 = 98.1 毫秒?这句话代表什么意思呢?因为执行时间在 0.9 ms - 1.7 ms 之间是没有任何意义的,而它们的平均值是 98.1 ms。我测试在 Postico 中执行相同的查询,花费了 0.903 毫秒。我只是好奇如果平均值不代表执行平均时间,它代表什么。

postgresql
  • 1 个回答
  • 8 Views
Martin Hope
Developer
Asked: 2024-03-19 13:25:48 +0800 CST

如何在macOS M1 Pro(硅芯片)中安装sqlplus

  • 5
这个问题是从 Stack Overflow 迁移来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。20 小时前迁移 。

我一直在互联网上搜索在 MacOs 苹果硅芯片(基于 Arm 的处理器)中安装 sqlplus 的最佳方法。请指导我一些最简单的方法来做到这一点。

我看到很多关于在基于 x64 intel 的处理器中安装 sqlplus 的文章,但没有在基于 arm64 的处理器上安装 sqlplus。

有关系统的更多详细信息

芯片 Apple M1 Pro Mac OS 版本 Mac OS Sonoma 14.3.1

installation
  • 1 个回答
  • 6 Views
Martin Hope
shaolinmonk
Asked: 2023-09-13 21:16:58 +0800 CST

T-SQL恢复数据库仅恢复旧数据

  • 5
这个问题是从 Stack Overflow 迁移来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。17 小时前迁移 。

我从 SQL Server 2014 迁移到 SQL Server 2022。

我首先从 SQL Server 2014 实例创建完整备份,然后运行RESTORE DATABASE下面所示的脚本来进行测试迁移。一切都按计划进行。

一周后,我删除了新服务器上的所有数据库,再次将 SQL Server 2014 备份到相同的文件名,然后再次运行以下脚本。然而,SQL Server 2022 并没有恢复该文件的最新版本,而是仅恢复了一周前的数据。只需右键单击用户界面并从那里执行“恢复”即可恢复数据的当前版本。

有人可以帮我理解为什么这是为了防止将来发生这种情况吗?

BACKUP DATABASE db1 TO DISK = db1.BAK;  
RESTORE DATABASE [db1]
FROM DISK = N'\\sql2014\migration\db1.BAK' WITH FILE = 1, 
     MOVE N'db1_data' TO N'D:\Data\db1_data.mdf', 
     MOVE N'db1_log' TO N'D:\Log\db1_log.ldf',
     NOUNLOAD,
     REPLACE,
     STATS = 5;
GO
sql-server
  • 1 个回答
  • 11 Views
Martin Hope
Akhilesh
Asked: 2023-09-04 18:47:29 +0800 CST

在 Azure SQL 数据库中使用相同分区号创建分区表上的分区

  • 5
这个问题是从 Stack Overflow 迁移来的,因为它可以在 Database Administrators Stack Exchange 上找到答案。13 小时前迁移 。

我正在创建一个具有分区逻辑的表。下面是配分函数和方案:

DECLARE @StartDate datetime2 = '20230401';
DECLARE @YearlyQuartersPartitionFunction nvarchar(max) = N'CREATE PARTITION FUNCTION YearlyQuartersPartitionFunction (datetime2) AS RANGE RIGHT FOR VALUES (';  

DECLARE @i datetime2 = @StartDate;  
WHILE @i < '20300101'  
BEGIN  
    SET @YearlyQuartersPartitionFunction += '''' + CAST(@i as nvarchar(10)) + '''' + N', ';  
    SET @i = DATEADD(MM, 3, @i);  
END  
SET @YearlyQuartersPartitionFunction += '''' + CAST(@i as nvarchar(10))+ '''' + N');';  
--PRINT @YearlyQuartersPartitionFunction;
EXEC sp_executesql @YearlyQuartersPartitionFunction; 
GO

如果您运行 bloc 来创建分区函数并取消注释 PRINT 语句,您将看到以下内容:

CREATE PARTITION FUNCTION YearlyQuartersPartitionFunction (datetime2) AS RANGE RIGHT FOR VALUES ('2023-04-01', '2023-07-01', '2023-10-01', '2024-01-01', '2024-04-01', '2024-07-01', '2024-10-01', '2025-01-01', '2025-04-01', '2025-07-01', '2025-10-01', '2026-01-01', '2026-04-01', '2026-07-01', '2026-10-01', '2027-01-01', '2027-04-01', '2027-07-01', '2027-10-01', '2028-01-01', '2028-04-01', '2028-07-01', '2028-10-01', '2029-01-01', '2029-04-01', '2029-07-01', '2029-10-01', '2030-01-01');
-- Partition scheme that maps to the PRIMARY filegroup
CREATE PARTITION SCHEME YearlyQuartersPartitionScheme
AS PARTITION YearlyQuartersPartitionFunction
ALL TO ([PRIMARY]);

我正在使用此方案使用以下 DDL 创建一个表:

CREATE TABLE [dbo].[MyTable](
    [Id] [uniqueidentifier] NOT NULL,
    [CompanyId] [uniqueidentifier] NOT NULL,
    [AddedUtc] [datetime2](7) NOT NULL,
    [IsTest] [bit] NOT NULL
) ON YearlyQuartersPartitionScheme(AddedUtc) ON PRIMARY;
GO
ALTER TABLE [dbo].[MyTable] ADD  CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_MyTable_CompanyId] ON [dbo].[MyTable]
(
    [CompanyId] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MyTable] ADD  DEFAULT (CONVERT([bit],(0))) FOR [IsTest]
GO
ALTER TABLE [dbo].[MyTable]  WITH CHECK ADD  CONSTRAINT [FK_MyTable_Companies_CompanyId] FOREIGN KEY([CompanyId])
REFERENCES [dbo].[Companies] ([Id])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_Companies_CompanyId]
GO

如果我检查为此表创建的分区,我会发现所有分区都具有相同的partition_number 值。这是错误的。

如果我做错了什么,有人可以指出吗?

我注意到分区方案的 data_space_id 与表上索引的 data_space_id 不匹配。

sql-server
  • 1 个回答
  • 5 Views
Martin Hope
Pato
Asked: 2023-04-27 15:21:31 +0800 CST

在 Oracle 中重建索引

  • 6
这个问题是从 Stack Overflow迁移过来的,因为它可以在 Database Administrators Stack Exchange 上回答。4 天前迁移 。

我什么时候需要重建索引。

我们在数据仓库位图索引中使用。如果我截断表并且没有行,然后插入新行,据我所知应该重建索引,因为这是有道理的。

当更新或插入或删除新行时总是如此,无论是使用单个语句还是使用合并语句然后 Oracle 自动更新所有类型的索引?

oracle
  • 1 个回答
  • 10 Views
Martin Hope
user269997
Asked: 2023-03-13 20:29:53 +0800 CST

在 SQL Server 中删除条目时,重置标识种子

  • 5

我已将记录添加到 SQL Server 数据库表中。该表已建立主键,自动增量标识种子设置为“是”。这样做主要是因为对于 SQL Azure,每个表都必须有一个主键和一个声明的身份。

然而,因为我需要从表中删除某些项目,这些表的标识种子将被破坏,索引列(自动生成,增量为 1)也是如此。

删除条目后如何重置标识列,使列的序列按数字升序排列?

标识字段不用作数据库中任何地方的外键。

sql-server
  • 1 个回答
  • 57 Views
Martin Hope
user266713
Asked: 2023-01-06 16:58:10 +0800 CST

AUTO_INCREMENT 在 mysql8 中不起作用:(

  • 5
CREATE TABLE IF NOT EXISTS `users` (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    org_id  int NOT NULL,
    phonenum int NOT NULL
)  ENGINE=INNODB;

INSERT INTO `users` VALUES (1, 'USER','abcd', 1, 1);

这会引发错误:第 13 行出现错误 1062 (23000):键“users.PRIMARY”的重复条目“1”

谢谢您的帮助!

mysql
  • 1 个回答
  • 19 Views
Martin Hope
John Stevenson
Asked: 2022-03-03 14:27:54 +0800 CST

归档旧 mysql 记录的最佳方法

  • 1

我们有一个带有 MySQL DB(在 AWS RDS 上)的 Ruby on Rails 应用程序。我们的一些表有大约 1 亿条记录,而且这个数字每个月都在迅速增加。这些表中的大多数记录都处于非活动状态,并且仅在用户可以访问的某些报表中偶尔访问。

我们现在面临几个问题:

  • 即使使用索引优化,这些表的查询时间也显着增加
  • 由于表很大,在紧急情况下从备份恢复需要很长时间

我们的要求是:

  • 数据需要无限期地保存在某个地方
  • (快速)读取数据
  • 自创建记录以来经过一段时间后无需进一步的写访问
  • 低成本

因此,我们计划执行以下操作:

  • 在一条记录“不活动”之后(这主要取决于自创建以来经过的一段时间),我们将在 DynamoDB 中创建一条记录,以镜像我们 sql db 中的数据。
  • 几天后,我们从 mysql db 中删除 sql 记录
  • 然后仍然可以通过 dynamodb 读取记录

我们的问题是这种方法是否是传统的,是否有更好的方法来实现我们想要的。任何输入将不胜感激。

mysql archive
  • 1 个回答
  • 220 Views
Martin Hope
user249280
Asked: 2022-03-10 13:58:31 +0800 CST

不确定如何制定关系代数查询

  • 2

问题问:

给定两个关系 A 和 B,它们都超过属性 x 和 y。在bag语义下编写一个查询,如果B为空则返回A,否则返回B

我解释这个问题的方式是“空的”意味着关系中没有元组。

这个问题是在一般意义上给出的,因此没有与每个关系相关联的值。

希望有人可以指导我开始。

编辑:到目前为止,我看到如果B为空,则A union B会产生正确的答案。但是在B不为空的情况下,我们需要取与B的交集,即(A union B) intersect B但这在B为空时不起作用

编辑:在A和B都是非空的情况下举一个例子:

答:((1,1),(2,2))

B : ((3,3), (4,4))

查询应返回: ((3,3), (4,4))

但是,如果我们将B更改为: ()

查询应返回: ((1,1), (2,2))

我只是想不通集合运算符的可能组合可以让我实现这一目标。

编辑:这是一个链接,基本上是用于教我们关系代数的确切幻灯片,大约 3/4 的方式定义了我的问题使用的袋子上的代数。课堂上使用的教科书是 Ramakrishnan 和 Gehrke 第 3 版第 100 页的“数据库管理系统”,但这是可选文本,我们被告知我们的主要参考资料应该是幻灯片。

为了浓缩幻灯片,我们的代数有选择、投影、重命名、笛卡尔积、并集和差集。所有其他操作都可以由这些操作组合而成。

为了解决问题的根源,我上学期为我的数据库模块准备了一张旧问题表,我最近重新审视了它,为我即将进行的一个项目修改了关系代数,但这个问题困扰了我好几天。提出问题的讲师已经离开,很遗憾我不能问他们。

relational-algebra
  • 1 个回答
  • 125 Views
Martin Hope
Dan Coffey
Asked: 2022-02-23 12:59:10 +0800 CST

如何对事务日志备份文件名进行增量编号?

  • 0

我需要创建一个数据库的事务日志备份,文件名以某种方式递增编号,每小时一个,全天。

例子:

上午 9 点 - mydb 01 .trn

上午 10 点 - mydb 02 .trn

上午 11 点 - mydb 03 .trn

等等

我不希望将日期或时间附加到这些内容,因为我们的 SAN 快照将负责版本控制。这些名称每天都必须相同。

我想这样做,而不必为一天中的每个小时创建一个工作。我只是无法使用基本的 T-SQL 来解决这个问题,这是我 T-SQL 技能的限制。我知道我可以创建一堆带有标准备份命令的作业,如下所示,具有不同的文件名和预定时间,但是必须有更好的方法。

BACKUP LOG [mydb] TO DISK = N'X:\SQLBackups\mydb01.trn.trn'
    ,NAME = N'mydb_backup'
    ,COMPRESSION
    ,STATS = 10
    ,CHECKSUM
GO
sql-server
  • 1 个回答
  • 20 Views
Martin Hope
user244938
Asked: 2021-12-18 09:00:31 +0800 CST

在 PostgreSQL 中存储时区 HH:MM

  • 1

我的应用程序需要在用户选择的时间每天向他们发送一封电子邮件,时区也由用户自己定义。

存储 HH:MM + 时区的最佳方式是什么?知道我的服务器位于特定时区,我如何有效地查询这个?

我现在的表是:

CREATE TABLE "reminder" (
    "id"            SERIAL          UNIQUE PRIMARY KEY,
    "user"          INT             NOT NULL REFERENCES "user"(id) ON DELETE CASCADE,
    "scheduled_at   TIMESTAMPTZ     NOT NULL,
    "created_at"    TIMESTAMPTZ     NOT NULL DEFAULT CURRENT_TIMESTAMP
)

我不确定是否TIMESTAMPTZ是最有效的方法,因为它存储整个时间戳,而不仅仅是HH:MM

postgresql datetime
  • 1 个回答
  • 137 Views
Martin Hope
user237107
Asked: 2021-10-05 09:40:22 +0800 CST

左连接中的列冲突与许多列与 PHPMyAdmin 结果集

  • 0

我有 4 个表(每个表大约 75 列),但它们共享具有相同名称的列:

表大师_产品

Master_Product.PD_Prof_21

表产品_结构

Product_Structure.PD_Prof_21

我正在做左连接;发生的情况是,当它将它们带到后端(php)时,它们会被覆盖……预期为 2 PD_Prof_21,但在 php 中只有一个是 retrive。

基于这个解决方案(它不能解决我的场景,因为我有大约 300 列)https://stackoverflow.com/a/10530252/4717133

我不相信使用超过 300 列的别名的想法......我知道列中的别名类似于:

SELECT Columns as column1 ... // this would be very heavy to do for each column ...

此其他选项不会分隔结果集中的表

SELECT 
Master_Product.*,
Product_Structure.*,
Supplier_Product.*,
Product_Price.*,

或者至少在 php 中我有问题,事实证明在 300 列中我只收到那些不重复的列,如果重复列,它只会显示最后一个具有最后一个值的列。

第一个疑问

所以我想知道mysql中是否有任何方法允许自动为结果集查询中的所有列添加前缀,例如:

SELECT PREFIX ('Master_', Master_Product. *), PREFIX ('Structure_', Product_Structure. *) ...

并在 PHP 中访问:

Master_PD_Prof_21
Structure_PD_Prof_21

用于检索信息的 PHP 脚本:

连接

function Open_Con_DB2($dbUsing) {
        $dblink = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASS, DB_PRE . $dbUsing);
        
        if ($dblink) {
            $dblink->query("SET NAMES 'utf8'"); # Enlace de Coneccion UTF-8
            return $dblink;
        } else {
            #No conviene mostrar errores internos
            #Cámbialos por mensajes personalizados en producción
            die( 'Error de Conexión ('
                 .mysqli_connect_errno(). ') '
                 . mysqli_connect_error()
                );
            return null;
        }
    }

获取信息。

function BDquery2($dbquery, $dbUsing) {
        $dblink = $this->Open_Con_DB2($dbUsing);
        if ($dblink) {
            if ( $datos = mysqli_query($dblink, $dbquery) ) {
                $outPut=array();
                while ($row = mysqli_fetch_assoc($datos)) {
                    $outPut[]=$row;
                }
            } else {
                $outPut['error']=$this->errorDB($dblink);
            }
            $this->Close_Con_DB($dblink);
        } else {
            $outPut['error']='No hay conexión';
        }
        return $outPut;
    }

查询已执行:( 对不起,数据库是西班牙语 XD)

SELECT 
Master_Producto.*, 
Producto_Estructura.*,
Producto_Proveedor.*,
Producto_Precio.*,
FROM Master_Producto
LEFT JOIN(SELECT * FROM Producto_Estructura) AS Producto_Estructura ON ( Master_Producto.Prod_Code = Producto_Estructura.Prod_Code AND Master_Producto.Prod_PF = Producto_Estructura.Prod_PF)
LEFT JOIN(SELECT * FROM Producto_Proveedor) AS Producto_Proveedor ON ( Master_Producto.Prod_Code = Producto_Proveedor.Prod_Code AND Master_Producto.Prod_PF = Producto_Proveedor.Prod_PF)
LEFT JOIN(SELECT * FROM Producto_Precio ORDER BY Prod_DateUpd DESC) AS Producto_Precio ON ( Master_Producto.Prod_Code = Producto_Precio.Prod_Code AND Master_Producto.Prod_PF = Producto_Precio.Prod_PF)

第二个疑问

奇怪的是,PHPmyadmin 如果它向我显示完整的结果......它为每个表显示 1 个部分......但我不能在 php.ini 中自己做。此示例是执行相同查询管的结果,该查询管在图像中对其进行裁剪,以便他们欣赏列的重复。

在此处输入图像描述

mysql query
  • 1 个回答
  • 121 Views
Martin Hope
Beuna S Aliyas
Asked: 2021-09-06 08:57:30 +0800 CST

致命:连接到 PosgreSQL 时用户“postgres”的 SSPI 身份验证失败

  • 0

我已经在我的 Windows 10 OS 笔记本电脑中安装了 PogtgreSQL 版本 13 并安装了 pgAdmin4。

我在 pg_hba.conf 和 pg_ident.conf 中进行了以下更改以实现 SSPI 身份验证。但是在连接到数据库时收到“致命:连接到 PosgreSQL 时用户“postgres”的 SSPI 身份验证失败”消息

pg_hba.conf

host    all     all        127.0.0.1/32       sspi      map=SSPI
host    all     all        ::1/128            sspi      map=SSPI

pg_ident.conf

#MAPNAME        SYSTEM-USERNAME          PG-USERNAME

SSPI              admin@BEUNA-PC             admin

日志文件:

2021-09-05 22:11:59.350 IST [11208] LOG:  starting PostgreSQL 13.4, compiled by Visual C++ build 1914, 64-bit
2021-09-05 22:11:59.352 IST [11208] LOG:  listening on IPv6 address "::", port 5432
2021-09-05 22:11:59.352 IST [11208] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2021-09-05 22:11:59.398 IST [8948] LOG:  database system was shut down at 2021-09-05 22:11:57 IST
2021-09-05 22:11:59.424 IST [11208] LOG:  database system is ready to accept connections
2021-09-05 22:12:36.083 IST [16332] LOG:  no match in usermap "SSPI" for user "postgres" authenticated as "admin@BEUNA-PC"
2021-09-05 22:12:36.084 IST [16332] FATAL:  SSPI authentication failed for user "postgres"
2021-09-05 22:12:36.084 IST [16332] DETAIL:  Connection matched pg_hba.conf line 96: "host    all     all        ::1/128            sspi      map=SSPI"
postgresql
  • 1 个回答
  • 476 Views
Martin Hope
user236222
Asked: 2021-07-31 01:44:39 +0800 CST

在 Postgres 中计算 JSONB 数组的平均值

  • 0

我的“答案”表中有一个名为“值”的列。

|  value  |
|---------|
|  [1,2]  |
|   [1]   |
| [1,2,3] |

“值”的类型是“jsonb”。

我想得到每一行中每个数组的平均值:

SELECT avg(value) AS avg_value
FROM answers

但这不起作用,因为 avg() 不是 jsonb 函数。我试过了:

SELECT avg(value::integer[]) as avg_value
FROM answers

即尝试将 jsonb 数组转换为整数数组,然后取平均值,但我收到以下错误:“无法将类型 jsonb 转换为整数 []。null”。

有任何想法吗?

postgresql json
  • 1 个回答
  • 464 Views
Martin Hope
user3391373
Asked: 2021-05-13 01:58:24 +0800 CST

如何在 Oracle 数据库中显示所有用户的所有系统权限

  • 0

我需要一个查询如何仅列出授予数据库中每个用户的所有系统权限(而不是对象权限)。我需要列出的系统权限,无论他们通过角色授予还是直接授予。

谢谢

oracle
  • 1 个回答
  • 277 Views
Martin Hope
alexistkd
Asked: 2021-04-25 06:00:43 +0800 CST

子查询sql的问题

  • 0

您好我收到此错误:

当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。

这是我当前的 SQL 查询:

DECLARE @UgpEntry VARCHAR(50)

SELECT @UgpEntry = UgpEntry FROM OITM t1 WHERE t1.ItemCode='CID-11418272385'

IF (@UgpEntry = -1)

SELECT
t1.ItemCode as sapitemcode
     , t1.CodeBars as Barcode
     , t1.ItemName as description
     ,LEFT(t1.ItemName,20) as short_description
     , 
           (select max(p.Price)
        from ITM1 p 
        where p.ItemCode = t1.ItemCode 
          and p.PriceList = 1) as [price_1]
     ,
         (SELECT T0.[ItemCode], T2.[U_NAME] as 'User that created Item', t0.updatedate

FROM AITM T0 inner join OUSR T2 on t0.usersign = t2.internal_K

WHERE T0.[ItemCode] = t1.ItemCode

group by T0.[ItemCode], T2.[U_NAME], t0.loginstanc, t0.updatedate

having t0.loginstanc = (select min(loginstanc) from AITM where itemcode = t0.loginstanc)),
     CASE t1.VatGourpSa when 'V0' THEN 4 when 'V1' THEN 1 WHEN 'V2' THEN 2 WHEN 'V3' THEN 3 END as TaxCode,t1.U_GRUPOA, t1.U_GRUPOB, t1.U_GRUPOC, t1.UgpEntry

FROM OITM t1
WHERE t1.ItemCode='CID-11418272385'
 
ELSE

SELECT t1.ItemCode as sapitemcode
     , t1.CodeBars as Barcode
     , t1.ItemName as description
     ,LEFT(t1.ItemName,20) as short_description
     , (select max(p.Price)
        from ITM9 p 
        where p.ItemCode = t1.ItemCode 
          and p.UomEntry = 1 and p.PriceList = 1) as [price_1mananitas],

           (select max(p.Price)
        from ITM1 p 
        where p.ItemCode = t1.ItemCode 
          and p.PriceList = 1) as [preciocajamananitas],
(select max(p.Price)
        from ITM9 p 
        where p.ItemCode = t1.ItemCode 
          and p.UomEntry = 1 and p.PriceList = 2) as [price_2cabra],
               (select max(p.Price)
        from ITM1 p 
        where p.ItemCode = t1.ItemCode 
          and p.PriceList = 2) as [preciocajacabra]

     , CASE t1.VatGourpSa when 'V0' THEN 4 when 'V1' THEN 1 WHEN 'V2' THEN 2 WHEN 'V3' THEN 3 END as TaxCode,t1.U_GRUPOA, t1.U_GRUPOB, t1.U_GRUPOC, t1.UgpEntry

FROM OITM t1
WHERE t1.ItemCode='CID-11418272385'

我刚刚添加了这个子查询:

(SELECT T0.[ItemCode], T2.[U_NAME] as 'User that created Item', t0.updatedate
    
    FROM AITM T0 inner join OUSR T2 on t0.usersign = t2.internal_K
    
    WHERE T0.[ItemCode] = t1.ItemCode
    
    group by T0.[ItemCode], T2.[U_NAME], t0.loginstanc, t0.updatedate
    
    having t0.loginstanc = (select min(loginstanc) from AITM where itemcode = t1.ItemCode))

当我单独运行它时,我会得到这样的结果:

在此处输入图像描述

我想要做的是在我的主查询中添加该选择,以便在原始查询中显示为新列。所以它应该像这样在末尾出现新列(T2.[U_NAME] 和 t0.updatedate):

在此处输入图像描述

我错过了什么?

谢谢你

sql-server-2008 query
  • 1 个回答
  • 43 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve