MySQL 数据库迁移至达梦 DM8 常见问题

news2024/10/23 22:27:48

目录

如何让迁移到 DM 的表名大小写和 MySQL 保持一致

MySQL 迁移到 DM 报错:列[NAMES]长度超出定义

MySQL 迁移到 DM 报错:记录超长

索引错误

DM大小写敏感配置

表空间

新建用户

用户与模式的关系

省略模式名的优势

实际操作


如何让迁移到 DM 的表名大小写和 MySQL 保持一致

【问题描述】

从 MySQL 迁移到 DM 数据库后,表名都变成大写了,怎么能保持表名和 MySQL 中的大小写一致?

【解决方法】

如果达梦数据库初始化的时候设置的是大小写敏感就会自动转大写,如果想保持小写,可以在迁移过程中勾选“保持对象名大小写”

MySQL 迁移到 DM 报错:列[NAMES]长度超出定义

【问题解决】

经排查,该表的 NAMES 字段存放的是中文,UTF8 编码。
报错原因:MySQL 中 varchar(1) 可以存一个汉字,DM 数据库是以字节为单位。若是 gb18030 字符集,varchar(2) 才可以存一个汉字;若是 UTF-8 字符集,varchar(3) 才可以存一个汉字。该 NAMES 在 MYSQL 的长度为 10,在迁移过程中,达梦数据库建表的 NAMES 字段长度也是 10,那么就会导致当该字段中文字符超过 4 个的时候,就会出现无法存下的问题。

【解决方法】
在此种情况下,为了保证汉字可以完整的被存储,可通过如下方法解决:
在迁移过程中,设置字符长度为“4”

MySQL 迁移到 DM 报错:记录超长

问题分析】MySQL 中的varchar长度超过了DM 支持的最长长度(DM最长为8188)。

【问题解决】在DM管理工具中,将错误的表启用超长记录。再重新执行错误失败任务。

索引错误

在迁移过程中出现了索引错误,经过检查后发现索引已成功建立。这可能是迁移工具引发的误报,可以忽略这个问题。

DM大小写敏感配置

DM数据库默认大小写敏感,如需设置大小写不敏感,需要在初始化数据库时,配置CASE_SENSITIVE=0 ,Docker compose部署可参考如下配置:

version: '3'
services:
  dm8:
    image: xxx(填写你自己的镜像地址)/dm8:20240715
    container_name: dm8
    restart: always
    privileged: true
    environment:
      CASE_SENSITIVE: 0       # 是否区分大小写,0 表示不区分,1 表示区分
      LD_LIBRARY_PATH: /opt/dmdbms/bin
      PAGE_SIZE: 16
      EXTENT_SIZE: 32
      LOG_SIZE: 1024
      UNICODE_FLAG: 1
      INSTANCE_NAME: dm8_test
    ports:
      - "30236:5236"
    volumes:
      - ./conf/dm.ini:/opt/dmdbms/conf/dm.ini
      - ./data:/opt/dmdbms/data

表空间

在达梦 DM8 数据库中,表空间的作用主要体现在以下几个方面:

  1. 数据存储的灵活性: 表空间允许将不同的数据对象存储在不同的表空间中,使得数据组织和管理更加灵活。例如,你可以为不同的业务模块或表分配独立的表空间,从而更好地控制数据存储的性能和空间。

  2. 性能优化: 通过将大型表或常用索引放置在独立的表空间中,可以优化数据访问性能。达梦 DM8 允许指定不同的存储设备和文件路径,以便更合理地分配存储资源,减少 I/O 瓶颈。

  3. 数据备份与恢复: 表空间使数据库的备份和恢复更加灵活。可以单独备份或恢复某个表空间,而不影响其他表空间中的数据,这在数据恢复时尤其有用,能够显著缩短恢复时间。

在迁移 MySQL 数据库至达梦 DM8 的过程中,合理配置表空间有助于提高数据管理的效率,并为系统的性能优化提供了更多的选择。因此,建议在迁移前规划好表空间的分布,并根据业务需求配置相应的表空间。

新建表空间

新建用户

在达梦 DM8 数据库中,用户与模式的关系密切,每个用户都有一个与之同名的模式。这一设计不仅有助于组织和管理数据库对象,还使得在进行 SQL 查询时可以省略模式名,从而提高了代码的可读性和兼容性。

用户与模式的关系

  1. 用户(User)

    • 每个用户在数据库中是一个独立的身份,用于身份验证和权限管理。
    • 用户可以在其模式下创建和管理数据库对象,例如表、视图和索引。
  2. 模式(Schema)

    • 每个用户自动创建一个同名的模式,这个模式用来组织用户创建的数据库对象。
    • 模式作为数据库对象的逻辑集合,确保同名对象不会发生冲突。

省略模式名的优势

  1. 简化 SQL 语句

    当用户与模式同名时,在进行 SQL 查询时可以省略模式名。例如,在 test_user 用户下创建了一个表 orders,可以直接使用:
    • SELECT * FROM orders; -- 省略模式名
  2. 兼容现有代码

    • 很多后端代码(尤其是旧代码)通常不带数据库名或模式名前缀。省略模式名的做法能够减少在迁移过程中的代码修改,提高兼容性,避免引入不必要的错误。
  3. 提高可读性

    • 省略模式名使得 SQL 语句更加简洁和清晰,特别是在复杂查询中,简化了表名的引用,增强了代码的可读性。

实际操作

用户表空间设置

所属角色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2221918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识图谱的概念、特点及应用领域(详解)

目录 什么是知识图谱? 二、特点 三、应用领域 什么是知识图谱? 知识图谱(Knowledge Graph)是一种将知识进行结构化、组织和表示的方法,它利用图形模型表示事物之间的关系和属性。知识图谱通过节点(实体&…

qt QWidget详解

一、概述 QWidget是容器组件,继承自QObject类和QPaintDevice类。能够绘制自己和处理用户输入,是QT中所有窗口组件类的父类,是所有窗口组件的抽象,每个窗口组件都是一个QWidget,QWidget类对象常用作父组件或顶级组件使…

T113 内核中 adbd相关配置1

准备工作 1. 配置 系统:ubuntu24.04docker(ubuntu18.04) 软件vscode, sdk:Tina-linux(BingPi-M2) 2. 构建环境直接使用自带的 source ./build/envsetup.sh lunch 选择 6 编译开启16线程 make -j16boot编译 mboot 打包…

关于jmeter中没有jp@gc - response times over time

1、问题如下: jmeter没有我们要使用的插件 2、解决方法: 选择下面文件,点击应用; 3、问题解决 ps:谢谢观看!!!

力扣 简单 746.使用最小花费爬楼梯

文章目录 题目介绍题解 题目介绍 题解 思路分析: 确定dp数组以及下标的含义:dp[i]的定义为到达第i台阶所花费的最少体力。确定递推公式:可以有两个途径得到dp[i],一个是dp[i-1] 一个是dp[i-2]。dp[i - 1] 跳到 dp[i] 需要花费 d…

玩转springboot之springboot异步执行

springboot异步执行 使用EnableAsync开启异步执行 在接口方法上使用Async注解进行标注,该接口是一个异步接口 自定义异步线程执行器 Configuration public class CustomAsyncConfigurer implements AsyncConfigurer {Overridepublic Executor getAsyncExecutor() {T…

WebGL编程指南 - 颜色与纹理

将顶点的其他(非坐标)数据——如颜色等——传入顶点着色器。 发生在顶点着色器和片元着色器之间的从图形到片元的转化,又称为图元光栅化 (rasterzation process)。 将图像(或称纹理)映射到图形…

C++笔记---哈希表

1. 哈希的概念 哈希(hash)又称散列,是一种组织数据的方式。从译名来看,有散乱排列的意思。 本质就是通过哈希函数把关键字Key跟存储位置建立一个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进行快速查找。 STL中的un…

推荐IDE中实用AI编程插件,目前无限次使用

插件介绍 一款字节跳动推出的“基于豆包大模型的智能开发工具” 以vscode介绍【pycharm等都可以啊】,这个插件提供智能补全、智能预测、智能问答等能力,节省开发时间 直接在IDE中使用,就不用在网页中来回切换了 感觉还可以,响应速…

Excel表格如何修改“打开密码”,简单几步,轻松搞定

在保护Excel文件的安全性时,设置打开密码是常见且有效的方式。然而,有时我们需要修改已经设置的打开密码,以确保文件安全性或更新密码信息。今天小编来分享一下修改Excel文件打开密码的方法,操作简单,一起来看看吧&…

设置OpenAI API的环境变量

获取openai API 密钥 https://platform.openai.com/api-keys 设置环境变量 为什么不在代码中直接写入,而是设置环境变量? 安全性:将 API 密钥存储在环境变量中,而不是直接写在代码中,可以降低泄露密钥的风险。易于…

第二期:第15节,beep 大海

首先是 代码的编写: 里面已经有了解释了。 1 /*2 * main.c3 *4 * Created on: 2023-3-85 * Author: pengdan6 */7 #include "exynos_4412.h"89 void delay_ms(unsigned int num)10 {11 int i,j;12 for(inum; i>0;i--)13 …

『完整代码』坐骑召唤

创建一个按钮 作为召唤/消失坐骑的开关 将预制体放入指定文件夹 命名为Mount01 创建脚本并编写:CallMount.cs using UnityEngine; using UnityEngine.UI; public class CallMount : MonoBehaviour{public Button callBtn;GameObject mountPrefab;GameObject mountIn…

[项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp

目录 一、前言 二、项目的相关背景 三、搜索引擎的宏观原理 四、搜索引擎技术栈和项目环境 五、正排索引 VS 倒排索引--原理 正排索引 分词 倒排索引 六、编写数据去除标签和数据清洗模块 Parser 1.数据准备 parser 编码 1.枚举文件 EnumFile 2.去标签ParseHtml(…

使用Vscode配置ftp连接远程服务器(上传本地文件)

1.安装插件 扩展商店搜sftp,点击进行安装。 2.配置json文件 crtl+shift+p 输入ftp配置命令 sftp:config {"name": "My Server", //设置名字"host": "localhost"</

android app执行shell命令视频课程补充android 10/11适配-千里马android

(https://blog.csdn.net/learnframework/article/details/120103471) https://blog.csdn.net/learnframework/article/details/120103471 hi&#xff0c;有学员在学习跨进程通信专题课程时候&#xff0c;在实战app执行一个shell命令的项目时候&#xff0c;对课程本身的android …

JVM、字节码文件介绍

目录 初识JVM 什么是JVM JVM的三大核心功能 JVM的组成 字节码文件的组成 基础信息 Magic魔数 主副版本号 其它基础信息 常量池 字段 方法 属性 字节码常用工具 javap jclasslib插件 阿里Arthas 初识JVM 什么是JVM JVM的三大核心功能 1. 解释和运行虚拟机指…

js实现点击随机点名效果

代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…

uniapp+vue3+uview-plus修改默认样式

最近使用uniappvue3uview-plus开发微信小程序中&#xff0c;使用uview-plus自定义底部导航栏tabbar时&#xff0c;遇到修改默认样式不生效问题 使用传统的 ::v-deep、:deep、::v-deep&#xff0c;或者style标签中去掉scoped也是无效的&#xff0c;有好的方案欢迎交流&#xff…

深入剖析 C 与 C++ 动态内存管理之术

亲爱的读者朋友们&#x1f603;&#xff0c;此文开启知识盛宴与思想碰撞&#x1f389;。 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f970;&#xff0c;共创活力社区。 &#x1f525;&#x1f525;&#x1f525;【C】进阶&#xff1a;类相关…