确认
- [X] 我的版本是最新版本, 我的版本号与 version 相同, 并且项目里无依赖冲突
- [X] 我已经在 issue 中搜索过, 确认问题没有被提出过
- [X] 我已经修改标题, 将标题中的 描述 替换为遇到的问题
当前程序版本
3.5.7
问题描述
如标题所述
代码中是调用DatabaseTableServiceImpl.getTable方法、该方法又调用ConfigBuilder.getTableInfoList方法来读取Table信息列表:
测试结果为取得的infra_config表的comment是乱码“鍙傛暟閰嶇疆琛�”
详细堆栈日志
No response
Comment From: nieqiurong
你到底是想问h2还是MySQL
Comment From: georgewei
你到底是想问h2还是MySQL
重新看了代码,测试时用的是h2,jdbc驱动程序为h2-2.2.224.jar。
application-unit-test.yaml中数据源配置如下:
spring: # 数据源配置项 datasource: name: ruoyi-vue-pro url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false;NON_KEYWORDS=value; # MODE 使用 MySQL 模式;DATABASE_TO_UPPER 配置表和字段使用小写 driver-class-name: org.h2.Driver username: sa password: druid: async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度 initial-size: 1 # 单元测试,配置为 1,提升启动速度 sql: init: schema-locations: classpath:/sql/create_tables.sql
create_tables.sql中创建infra_config表的语句如下:
CREATE TABLE IF NOT EXISTS "infra_config" ( "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY COMMENT '编号', "category" varchar(50) NOT NULL, "type" tinyint NOT NULL, "name" varchar(100) NOT NULL DEFAULT '' COMMENT '名字', "config_key" varchar(100) NOT NULL DEFAULT '', "value" varchar(500) NOT NULL DEFAULT '', "visible" bit NOT NULL, "remark" varchar(500) DEFAULT NULL, "creator" varchar(64) DEFAULT '', "create_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "updater" varchar(64) DEFAULT '', "update_time" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, "deleted" bit NOT NULL DEFAULT FALSE, PRIMARY KEY ("id") ) COMMENT '参数配置表';
Comment From: georgewei
已经解决了,在application-unit-test.yaml的数据源配置中增加以下内容即可: spring.sql.init.encoding: UTF-8