Skip to main content

Bug 合集

昨天遇到的 BUG

Published 2 min readMarkdown

1、初始化 PostgreSQL 出现的问题

Caused by: org.postgresql.util.PSQLException: ERROR: relation "public.vector_store" does not exist 最简单的办法是让启动 Spring 自动创建,但是这个自动创建需要先提前注释掉两行代码

@Configuration
public class PgVectorVectorStoreConfig {
​
    @Resource
    private LoveAppDocumentLoader loveAppDocumentLoader;
​
    @Bean
    public VectorStore pgVectorVectorStore(JdbcTemplate jdbcTemplate, EmbeddingModel dashscopeEmbeddingModel) {
        VectorStore vectorStore = PgVectorStore.builder(jdbcTemplate, dashscopeEmbeddingModel)
                .dimensions(1536)                    // Optional: defaults to model dimensions or 1536
                .distanceType(COSINE_DISTANCE)       // Optional: defaults to COSINE_DISTANCE
                .indexType(HNSW)                     // Optional: defaults to HNSW
                .initializeSchema(true)              // Optional: defaults to false
                .schemaName("public")                // Optional: defaults to "public"
                .vectorTableName("vector_store")     // Optional: defaults to "vector_store"
                .maxDocumentBatchSize(10000)         // Optional: defaults to 10000
                .build();
        // 加载文档
//        List<Document> documents = loveAppDocumentLoader.loadMarkdowns();
//        vectorStore.add(documents);
        return vectorStore;
    }
}
​

2、插入数据库报错,但是日志没有显示只是卡住了没有继续执行。问 AI 说:MySQL 字符集错误在部分驱动版本中不会立即抛异常,而是 hang 在 write packet 阶段,因此日志不会输出,需要手动打印 SQL 或抓 MySQL error log。

排查的话:先在 update 代码前后写一下 log.info("xx") 日志,不 debug 启动然后测试执行,发现没有执行到后面的 log 下一步是把日志输出的 log 给 AI 让 AI 写完整的 update 语句,

UPDATE question_submit SET judgeInfo = '{"message":"答案错误","memory":100,"time":100}', status = 2 WHERE id = 1995383300660289537 AND isDelete = 0;

发现了爆错的情况:1366 - Incorrect string value: '\xE7\xAD\x94\xE6\xA1\x88...' for column 'judgeInfo' at row 1

到这里大概猜到是一位编码的问题了,就让 AI 生成更新字符集的 SQL 执行了一下就好了

ALTER TABLE question_submit MODIFY judgeInfo TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3、鱼友使用 GML4.6 出现报错 A component required a bean of type 'dev.langchain4j.model.chat.ChatModel' that could not be found.

原因是因为:删除配置文件删多了把下面的内容给删除了

langchain4j:
  open-ai:
    chat-model:
      base-url: 
      api-key: 
      model-name: deepseek-chat
      #      strict-json-schema: true
      #      response-format: json_object
      max-tokens: 8192
      log-requests: true
      log-responses: true
      max-retries: 3

4、Knife4j 相关的报错 java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.<init>(java.lang.Object)' at org.springdoc.core.service.GenericResponseService.lambda$getGenericMapResponse$8(GenericResponseService.java:702) ~[springdoc-openapi-starter-common-2.3.0.jar:2.3.0]

这个是常见的问题了,解决办法是在 GlobalExceptionHandler 加上 io.swagger.v3.oas.annotations.Hidden 注解就好了

5、通过向 Gemini 学习又加深了 Linux 系统设计的巧妙,比如这个用来分配内存的系统调用 mremap(),他不会直接操作物理内存而是操作内存映射区域 (Memory Mappings),即由 mmap 创建的区域,这样比如发生了内存不够的情况他会修改也表项,而不移动 物理内存 ,这样就算调整一个 2G 的内存,也可以瞬间完成,他只是修改指针而不是修改物理地址的位置,不会出现不需要的拷贝操作

No comments yet. Be the first to comment.

More from this blog