RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[postgresql]

Martin Hope
Garp
Asked: 2025-03-28 16:38:54 +0000 UTC

Web API + postgresql,错误‘42p01 关系...不存在’

  • 5

小项目ASP .Net Web API,bd postgresql。

该数据库booksdb是在管理面板中手动创建的。有一张桌子books,位于shemas.public。手动添加了几行数据(QueryTool也可以通过管理面板中的界面)

语境:

public class BookStoreDbContext : DbContext
{
    public BookStoreDbContext(DbContextOptions<BookStoreDbContext> options)
            : base(options) 
    {
    }
    public DbSet<BookEntity> Books { get; set; }
}

连接字符串:

"ConnectionStrings": {
  "BookStoreDbContext": " ......User ID=postgres;Database=booksdb;"

错误:

在此处输入图片描述

项目正在正确构建。

没有前端,我使用 Swagger,它应该返回模拟数据字符串。

错误前调试:

在此处输入图片描述

该库可以从外部访问,例如从 Python:

import psycopg2

conn = psycopg2.connect(dbname="books1db",
                 host="127.0.0.1",
                 user="postgres",
                 password="my_password",
                 port="5432")
cursor = conn.cursor()
query = "SELECT * FROM books"
cursor.execute(query)  
result = cursor.fetchall()
cursor.close()
conn.close()
for row in result:
    print(row)

关于这个错误有很多记载(例如),但所有情况都是(1)代码中数据库创建不正确(2)代码中查询不正确。 “不正确”是因为大小写不正确,或者括号和引号不正确,或者必须通过模式名称访问表。就我而言,这些都不存在。

postgresql
  • 1 个回答
  • 93 Views
Martin Hope
Dasha
Asked: 2025-03-18 00:59:45 +0000 UTC

选择将外键显示为数据的查询

  • 4

请帮我写一个选择查询
我有两个表:

  1. 呼叫,具有以下属性:
    id_call(主键)、
    date_of_call、
    time_of_call、
    minute_duration、
    id_number_in - 来电号码(Number.id_number 的外键)、
    id_number_out - 拨出号码(Number.id_number 的外键)

  2. 数字,具有属性:
    id_number(主键)、
    phone_number

我需要编写一个查询,以用户友好的形式显示所有数据,即显示数据而不是外部键。我写了这个查询(见下文),但我被困住了,因为我不知道如何实现它,以便显示订阅者号码而不是“传入”和“传出”列中的键。

select id_call as "Код звонка", 
    date_of_call as "Дата звонка", 
    time_of_call as "Время звонка", 
    minute_duration as "Продолжительность(в минутах)",
    id_number_in  as "Входящий",
    id_number_out as "Исходящий" from call_tb
inner join number_tb on number_tb.id_number = call_tb.id_number_in;

我的请求的结果(https://drive.google.com/file/d/1bgm8LQWUv4rsD5cqaR_RbC5wJxngtRVc/view?usp=sharing)

postgresql
  • 1 个回答
  • 33 Views
Martin Hope
Андрей
Asked: 2025-02-08 18:05:20 +0000 UTC

Postgresql 锁定顺序与触发器之前

  • 5

场景:有一张表,其中发生行的更新。该表还具有一个BEFORE UPDATE 行触发器,它在工作开始时使用 pg_advisory_xact_lock。

问题:先使用哪把锁?因为 UPDATE 操作本身没有密钥更新而阻塞?或者 pg_advisory_xact_lock?

根据Postgresql 文档,“语句级 BEFORE 触发器在语句开始执行任何操作之前触发”。这让人觉得应该首先应用 pg_advisory_xact_lock 锁。

但是在进行实验之后:在并行事务中,我首先手动应用 pg_advisory_xact_lock,然后进行无键更新,然后尝试使用触发器触发来更新行。我得到的结果是第二个事务由于无法获取表记录锁而被取消,而不是由于无法获取咨询锁。表示先获取行锁,再执行触发器。

但我在文档中没有找到任何证实我的实验结果的证据。有人知道我可以在哪里阅读此场景中的操作顺序吗?

postgresql
  • 1 个回答
  • 39 Views
Martin Hope
Maxim Wolf
Asked: 2025-02-07 16:21:01 +0000 UTC

时区的 TimeTZ 误解了时区

  • 4

有一个简单的 SQL 查询:

SELECT '06:00:00 +0600'::timetz at time zone '-05:00',
       '06:00:00 +0600'::timetz at time zone '+05:00'

我希望收到回复

+---------------+---------------+
|timezone       |timezone       |
+---------------+---------------+
|19:00:00 -05:00|05:00:00 +05:00|
+---------------+---------------+

但 PostgreSQL 产生相反的结果:

+---------------+---------------+
|timezone       |timezone       |
+---------------+---------------+
|05:00:00 +05:00|19:00:00 -05:00|
+---------------+---------------+

请告诉我这个问题的原因是什么。谢谢。

postgresql
  • 1 个回答
  • 16 Views
Martin Hope
Limon4egtop
Asked: 2025-01-07 06:10:06 +0000 UTC

错误:无法将类型字节转换为日期

  • 5

我已经有大约一周时间无法找出 Spring Boot 存储库中的问题了,并且我已经没有关于如何解决它的想法了。问题出在方法上findOrdersByFilters。如果我第一次调用它并传递日期作为参数之一,那么一切都会正常工作,并且对数据库的请求会按应有的方式处理,但是如果在启动程序后首先传递除日期之外的任何内容,那么该请求停止正常工作并抛出错误。演示该问题的视频:https://youtu.be/-pWz3vgBpIc

2025-01-06T14:28:02.035+03:00  WARN 4997 --- [nio-8082-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42846
2025-01-06T14:28:02.035+03:00 ERROR 4997 --- [nio-8082-exec-5] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: cannot cast type bytea to date
  Позиция: 910
2025-01-06T14:28:02.042+03:00 ERROR 4997 --- [nio-8082-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.InvalidDataAccessResourceUsageException: JDBC exception executing SQL [select o1_0.id,o1_0.client_id,o1_0.comment,o1_0.date_create,o1_0.date_end,o1_0.machine,o1_0.manager_username,o1_0.order_status,o1_0.payment_status from orders o1_0 join clients c1_0 on o1_0.client_id=c1_0.id left join employee e1_0 on o1_0.manager_username=e1_0.username where (? is null or o1_0.id=?) and (? is null or c1_0.company_name like ('%'||?||'%') escape '') and (? is null or (e1_0.first_name is not null and e1_0.last_name is not null and (e1_0.first_name like ('%'||?||'%') escape '' or e1_0.last_name like ('%'||?||'%') escape '' or (e1_0.first_name||' '||e1_0.last_name) like ('%'||?||'%') escape '' or (e1_0.last_name||' '||e1_0.first_name) like ('%'||?||'%') escape ''))) and (? is null or o1_0.payment_status like ('%'||?||'%') escape '') and (? is null or o1_0.order_status like ('%'||?||'%') escape '') and (? is null or o1_0.comment like ('%'||?||'%') escape '') and (cast(? as date) is null or o1_0.date_end=cast(? as date)) and (? is null or o1_0.manager_username=?) order by o1_0.date_create desc] [ERROR: cannot cast type bytea to date
  Позиция: 910] [n/a]; SQL [n/a]] with root cause

OrderRepo.java

package ru.limon4egtop.printingCRM.repos;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import ru.limon4egtop.printingCRM.dto.OrderFilterDto;
import ru.limon4egtop.printingCRM.models.Orders;

import java.util.List;

@Repository
public interface OrderRepo extends JpaRepository<Orders, Long> {

    @Query("""
    SELECT o FROM Orders o
    JOIN Clients c ON o.clientId = c.id
    LEFT JOIN Employee e ON o.managerUsername = e.username
    WHERE (:#{#filter.id} IS NULL OR o.id = :#{#filter.id})
      AND (:#{#filter.companyName} IS NULL OR c.companyName LIKE CONCAT('%', :#{#filter.companyName}, '%'))
      AND (
            :#{#filter.managerName} IS NULL OR 
            (
                e.firstName IS NOT NULL AND e.lastName IS NOT NULL AND
                (
                    e.firstName LIKE CONCAT('%', :#{#filter.managerName}, '%') OR
                    e.lastName LIKE CONCAT('%', :#{#filter.managerName}, '%') OR
                    CONCAT(e.firstName, ' ', e.lastName) LIKE CONCAT('%', :#{#filter.managerName}, '%') OR
                    CONCAT(e.lastName, ' ', e.firstName) LIKE CONCAT('%', :#{#filter.managerName}, '%')
                )
            )
        )
      AND (:#{#filter.paymentStatus} IS NULL OR o.paymentStatus LIKE CONCAT('%', :#{#filter.paymentStatus}, '%'))
      AND (:#{#filter.orderStatus} IS NULL OR o.orderStatus LIKE CONCAT('%', :#{#filter.orderStatus}, '%'))
      AND (:#{#filter.comment} IS NULL OR o.comment LIKE CONCAT('%', :#{#filter.comment}, '%'))
      AND (CAST(:#{#filter.dateEnd} AS DATE) IS NULL OR o.dateEnd = CAST(:#{#filter.dateEnd} AS DATE))
      AND (:#{#filter.currentUsername} IS NULL OR o.managerUsername = :#{#filter.currentUsername})
    ORDER BY o.dateCreate DESC
""")
    List<Orders> findOrdersByFilters(@Param("filter") OrderFilterDto filter);
} 

OrderServiceImp.java

package ru.limon4egtop.printingCRM.Services.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import ru.limon4egtop.printingCRM.Services.OrderService;
import ru.limon4egtop.printingCRM.dto.OrderFilterDto;
import ru.limon4egtop.printingCRM.models.Orders;
import ru.limon4egtop.printingCRM.repos.OrderRepo;

import java.util.List;

@Service
public class OrderServiceImp implements OrderService {
    private OrderRepo orderRepo;

    @Autowired
    public OrderServiceImp(OrderRepo orderRepo) {
        this.orderRepo = orderRepo;
    }

    @Override
    public List<Orders> getOrdersByFilters(final OrderFilterDto orderFilterDto) {
        System.out.println(orderFilterDto.toString());
        return this.orderRepo.findOrdersByFilters(orderFilterDto);
    }
}

OrderFilterDto.java

package ru.limon4egtop.printingCRM.dto;

import java.time.LocalDate;

public class OrderFilterDto {
    private Long id;
    private String companyName;
    private String managerName;
    private String paymentStatus;
    private String orderStatus;
    private String comment;
    private LocalDate dateEnd;
    private String currentUsername;

    public OrderFilterDto(Long id, String companyName, String managerName, String paymentStatus, String orderStatus, String comment, LocalDate dateEnd, String currentUsername) {
        this.id = id;
        this.companyName = companyName;
        this.managerName = managerName;
        this.paymentStatus = paymentStatus;
        this.orderStatus = orderStatus;
        this.comment = comment;
        this.dateEnd = dateEnd;
        this.currentUsername = currentUsername;
    }

    @Override
    public String toString() {
        return "OrderFilterDto {" +
                "id=" + id +
                ", companyName='" + companyName + '\'' +
                ", managerName='" + managerName + '\'' +
                ", paymentStatus='" + paymentStatus + '\'' +
                ", orderStatus='" + orderStatus + '\'' +
                ", comment='" + comment + '\'' +
                ", dateEnd=" + dateEnd +
                ", currentUsername=" + currentUsername +
                '}';
    }
}

postgresql
  • 1 个回答
  • 33 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

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

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5