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

目录

如何让迁移到 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 语句更加简洁和清晰,特别是在复杂查询中,简化了表名的引用,增强了代码的可读性。

实际操作

用户表空间设置

所属角色

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络原理】——拥塞控制,延时/捎带应答,面向字节流,异常情况

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:拥塞控制(重点) 1:情境引入 2:解决方案…

【Docker】安装部署项目流程(Pycharm版)

安装部署步骤 1.准备项目 第一步要准备好你所需要部署的项目,确保在工作目录下所以程序.py文件正常调用并能正确运行 如上,main要在工作目录中能跑通,这里有一点需要注意 在IDE src不要标记为源代码根目录,观察一下是否能跑通代…

【计算机网络 - 基础问题】每日 3 题(五十)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

Java最全面试题->Java基础面试题->JavaSE面试题->面向对象面试题

面向对象 下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图 哪里不会点哪里 1.面向对象和面向过程的区别 面向对象: 优点:易维护,复用,扩展。面向对象…

解决DOTA-v2.0数据集上传结果至官网BUG: No space left on device

时间:2024.10.20 一、DOTA-v2.0数据集上传结果至官网BUG: No space left on device IOError at /evaluation1/ [Errno 28] No space left on device二、解决方法,法一 上传的结果文件太大了,把服务器磁盘占满了。 将结果中精度…

【算法】KMP字符串匹配算法

目录 一、暴力 二、KMP 2.1 思路 2.2 next数组 2.3 实现 2.4 例题 一个人能走的多远不在于他在顺境时能走的多快,而在于他在逆境时多久能找到曾经的自己。 …

elementui时间选择器time-picker返回值不对的问题

1. 问题 天杀的elementui的time-picker,导致我开发的系统出现了一次生产问题,原因竟然是因为组件库的bug!直接上截图。 如图,正常情况下,选择时间后,想要得到的值理应是当天的时间,如图是当年…

zotero文献管理学习

1 zotero软件简介 zotero是一款开源的文献管理软件。如果你听说或使用过EndNote,那么可能会对“文献管理”有一定的概念。可以简单地这样理解:zotero一定程度上可以作为EndNote的平替。 EndNote需要注册付费,对于无专业科研机构隶属关系的企…

使用apipost连接openai的接口进行模型对话

使用apipost连接openai的接口进行模型对话 1.API准备2.APIPOST配置2.1请求地址和header的设置2.2认证API设置2.3body设置2.4结果 1.API准备 这里使用网络上的API,使用硅基流动的 API Key,所以接下来便是注册并获取 API Key 了。 首先,我们打…

轻量级可视化数据分析报表,分组汇总表!

什么是可视化分组汇总表? 可视化分组汇总表,是一种结合了数据分组、聚合计算与视觉呈现功能的数据分析展示功能。它能够按照指定的维度(如时间、地区、产品类型等)对数据进行分组,还能自动计算各组的统计指标&#xf…

RabbitMQ 入门(四)SpringAMQP五种消息类型(Work Queue)

一、WorkQueue(工作消息队列) Work queues,也被称为(Task queues),任务模型。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。 当消息处理比较耗时的时候,可能生产消息的速度会远远大于…

官龙村捐赠图书整理有感

今天(2024年10月20日),我有幸参加了在深圳南山区西丽官龙村举行的义工活动,主要任务是整理捐赠的图书,并根据小学和中学的需求进行分类打包。这次活动不仅让我体会到了劳动的辛苦,更让我感受到了助人为乐的…

如何使用Python合并Excel文件中的多个Sheet

在日常工作中,我们经常会遇到需要处理多个Excel工作表(Sheet)的情况。比如,一个Excel文件中包含了一个月内每天的数据,每个工作表代表一天。有时候,为了方便分析,我们需要将这些分散的数据合并到…

【MySQL】详解MySQL数据类型

一、数据类型 各类型的数值范围: 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的。对于int类型可能存放不下的数据,尽量不使用unsigned,unsigned int 同样可…

国家信息安全水平考试(NISP一级)最新题库-第十六章

目录 另外免费为大家准备了刷题小程序和docx文档,有需要的可以私信获取 1 防火墙是一种较早使用、实用性很强的网络安全防御技术,以下关于防火墙说法错误的是() A.防火墙阻挡对网络的非法访问和不安全数据的传递;B.防…

强对流降水临近预报

强对流降水是一种最常见的灾害性天气,其突发性和局地性强、生命史短、灾害重等特点极易给人民生产和生活带来巨大的破坏和伤害。如果可以提前预知此类天气状态,则可以挽回巨大的生命财产损失,尤其是短时(0~12小时)和临…

基础篇:带你打开Vue的大门(二)

目录 学习目标: 核心技能目标 学习内容: 学习产出: 学习目标: 能够创建Vue实例并理解其基本选项。 理解el、data、methods等选项的作用。 掌握数据绑定: 理解单向数据绑定和双向数据绑定的区别。能够使用v-bind和…

MySQL进阶之(十二)MySQL事务日志-undo log

十二、MySQL事务日志-undo log 12.1 undo log 引入12.2 undo log 的作用01、回滚数据02、MVCC 12.3 undo log 的存储结构01、回滚段与 undo 页02、回滚段与事务03、回滚段中的数据分类 12.4 undo log 的类型12.5 undo log 的生命周期01、执行 insert 操作02、执行 update 操作0…

Kubernetes部署练习

Kubernetes详细笔记 文章目录 Kubernetes 一、Kubernetes介绍 1.1、应用部署方式演变1.2、kubernetes简介1.3、kubernetes组件1.4、kubernetes概念 二、集群环境搭建 2.1、环境规划 2.1.1、集群类型2.1.2、安装方式2.1.3、主机规划 2.2、环境搭建 2.2.1、主机安装2.2.2、环境初…

如何开启华为交换机 http

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…