高级DBA带你解决达梦8数据库解决列名涉及达梦关键字无法执行问题全网唯一

本文围绕达梦8数据库展开,介绍了三个方面内容。一是解决列名涉及达梦关键字无法执行的问题,有两种方法,推荐修改列名;二是获取达梦的建表语句DLL方法;三是开启达梦慢查询日志,可通过修改配置文件或动态执行SQL实现。
摘要由CSDN通过智能技术生成

一、达梦8数据库解决列名涉及达梦关键字无法执行问题

我们再开发过程中遇到一些列名称是达梦的关键字,导致语句无法执行。
举例:LESS

select keyword,reserved from v$reserved_words where keyword='LESS';  #查询单词是否设计达梦关键字

在这里插入图片描述

在这里插入图片描述

解决方法一:用“”包住设计关键字的列名

在这里插入图片描述

解决方法二:修改表列名

将设计关键字的列名修改比如将LESS改成LESS_VAL

alter table "模式名称"."表名" alter column "LESS" rename to "LESS_VAL";  #将表的列名LESS修改为LESS_VAL

修改了列名之后,就不会设计到达梦关键字了。
在这里插入图片描述
推荐方法二,完全解构,日后维护更方便,并且更安全!

二、达梦8获取达梦的建表语句DLL方法

select DBMS_METADATA.GET_DDL ('TABLE','表名','模式名')	
	
SELECT TABLEDEF('模式名','表名');	
	
call SP_TABLEDEF('表名','模式名');	

三、开启达梦慢查询日志

在这里插入图片描述
先找到dm.ini配置文件的位置

ps -ef | grep dmserver

在这里插入图片描述

cd /dmdata/DAMENG/         #进入达梦的数据路径
grep SVR_LOG  dm.ini  #查看配置的值

在这里插入图片描述
配置改成1之后保存

在这里插入图片描述
在这里插入图片描述
同级目录下:修改sqllog.ini文件配置
在这里插入图片描述
在这里插入图片描述

BUF_TOTAL_SIZE          = 10240         #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE                = 1024          #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT            = 6             #SQLs Log buffer keeped count(1~100)

[SLOG_ALL]
    FILE_PATH    = /dmdata/DAMENG/log
    PART_STOR    = 0
    SWITCH_MODE  = 2
    SWITCH_LIMIT   = 128
    ASYNC_FLUSH   = 1
    FILE_NUM = 5
    ITEMS    = 0
    SQL_TRACE_MASK  = 1
    MIN_EXEC_TIME =500     #单位毫秒
    USER_MODE   = 0
    USERS =

重启数据库DM8服务配置生效!

service DmServiceDMSERVER restart

也可以动态执行SQL修改配置文件dm.ini的值无需重启服务SQL如下:

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

执行SQL之后查看路径/dmdata/DAMENG/log

在这里插入图片描述

tail -f dmsql_DMSERVER_20221028_161317.log    #日志会输出过滤的SQL

动态更改sqllog.ini的值,马上生效执行sql,讲sqllog.ini配置加载到内存去,马上生效!

SP_REFRESH_SVR_LOG_CONFIG();

笔者简介
国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

### 使用 MyBatis Plus 整合达梦数据库进行分页查询 #### 配置依赖项 为了使 MyBatis Plus 能够与达梦数据库协同工作,项目中应引入相应的依赖库。确保 `pom.xml` 文件中有如下配置: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本号</version> </dependency> <!-- 达梦 JDBC驱动 --> <dependency> <groupId>dm.jdbc.driver</groupId> <artifactId>dmjdbcdriver</artifactId> <version>对应版本号</version> </dependency> ``` #### 数据源配置 在 Spring Boot 的应用属性文件 (`application.yml`) 中设置数据源连接信息以及 MyBatis Plus 特定的配置选项。 ```yaml spring: datasource: url: jdbc:dm://localhost:端口号/数据库名 username: 用户名 password: 密码 driver-class-name: dm.jdbc.driver.DmDriver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ``` #### Mapper 接口编写 创建继承自 `BaseMapper<T>` 的接口来操作特定的数据表。对于分页功能,则需利用内置的 `Page<T>` 类型来进行处理。 ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; public interface UserMapper extends BaseMapper<UserEntity> { /** * 自定义分页查询方法 */ Page<UserEntity> selectUserPage(Page<UserEntity> page, @Param("name") String name); } ``` #### Service 层逻辑实现 Service层负责业务逻辑,在这里可以调用上述定义好的mapper方法完成具体的分页查询任务。 ```java @Service public class UserService { private final UserMapper userMapper; public UserService(UserMapper userMapper){ this.userMapper = userMapper; } public IPage<UserEntity> getUserPages(Integer pageNum, Integer pageSize, String userName) { // 创建分页对象 Page<UserEntity> page = new Page<>(pageNum, pageSize); // 执行分页查询 return userMapper.selectUserPage(page, userName)[^2]; } } ``` #### Controller 控制器设计 最后一步是在控制器中暴露 RESTful API 给前端调用者访问。 ```java @RestController @RequestMapping("/users") public class UserController { private final UserService userService; public UserController(UserService userService){ this.userService = userService; } @GetMapping("/pages") public Result<IPage<UserEntity>> getUsersByPage( @RequestParam(value="currentPage", defaultValue="1") int currentPage, @RequestParam(value="pageSize", defaultValue="10") int pageSize, @RequestParam(required=false) String keyword) { try{ IPage<UserEntity> result = userService.getUserPages(currentPage, pageSize, keyword); return Result.success(result)[^3]; }catch(Exception e){ logger.error(e.getMessage(),e); throw new RuntimeException("获取用户失败"); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术很渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值