当前位置: 首页 > news >正文

gbase8s之建表相关问题

第一章..绪论

1.1..背景

需要对明年所有系统的表新建。

1.2..要求

对导切建表可能遇到的一些问题罗列及解决办法。

第二章..新建表的的过程

1.1..获取DDL

获取DDL一定要在服务器上去获取,千万别用gds去导出ddl。

1.1.1..切换数据库用户

su – gbasedbt

1.1.2..根据需要选取以下其中一个DDL导出方式

获取某个库的DDL

dbschema -d 库名 -ss > 库名.sql

获取某个表的的DDL

dbschema -d 库名 表名 -ss > 表名.sql

1.2..修改上面一步导出的sql文件里的DDL

总共有以下三处要改:

同一个库的表名必须唯一,需要改表名。

同一个库的约束名必须唯一,需要改主键或者唯一约束名。

同一个库的索引名必须唯一,需要改索引名称。

1.3..新建2025年所有系统的表

1.3.1..根据需要选取以下其中一个方式建表

dbaccess 库名  库名.sql

dbaccess 库名  表名.sql

第三章..测试

1.1..测试

1.1.1..拷贝到测试环境

将导出的sql文件拷贝到测试环境的/home/gbase/,

1.1.2..切换到root用户,授予sql文件777权限

su - root

chmod 777 库名.sql

chmod 777 表名.sql

1.1.3..切换到数据库用户, 根据需要选取以下其中一个方式建表

su - gbasedbt

dbaccess 库名  库名.sql

dbaccess 库名  表名.sql

第四章..实施步骤

1.1..执行建表

切换到数据库用户, 根据需要选取以下其中一个方式建表

su - gbasedbt

dbaccess 库名  库名.sql

dbaccess 库名  表名.sql

第五章..建表遇见的问题

1.1..在线修改表结构

如果有业务在访问该表,此时需要去修改表结构,会遇到如下两个问题。

1.1.1..在线表结构成功应用报错

Table (tablename) has been dropped, altered or renamed

如果遇见上面报错内容,一般只会报错一次就会恢复,如果连续报错,请重启应用

1.1.2..在线表结构修改失败

失败原因是不能独占锁资源,请用如下语句去修改

dbaccess 库名  -

SET ENVIRONMENT FORCE_DDL_EXEC "60";--强制修改表结构
SET LOCK MODE TO WAIT 60;--锁等待

alter 语句;

rename 语句;

1.2..not null 要在default表达式后面

not null不在default会建表报错

1.3..建表时候不能default ‘’ not null

因为数据库ENABLE_NULL_STRING 配置参数,启用或禁用空字符串(’’)查询时是否等同于 NULL 的功能。
1 = 启用(缺省值),空字符串(’’)等同于 NULL
0 = 禁用,空字符串(’’)不等同于 NULL

default ‘’ not null此时没问题,'一个空格' 等价于 '多个空格’,原因gbase会丢弃字符串右边大于1的空格。

ENABLE_NULL_STRING1 = 启用时候,此时null 等价于 ’’ 等价于’   ’,'一个空格' 等价于 '多个空格’,原因gbase会丢弃字符串右边大于1的空格,default ‘’ not null逻辑矛盾,建表会成功,但是insert会报错误.

完结!!!!!!!!!!!!!!!!!!!


http://www.mrgr.cn/news/50058.html

相关文章:

  • C语言:在Visual Studio中使用C语言scanf输入%s出现的栈溢出问题
  • 量子噪声与量子操作
  • 谷歌浏览器主题和皮肤设置教程
  • Jetpack-ViewModel+LiveData+DataBinding
  • docker删除容器要怎么操作?如何保障容器安全!
  • leetcode哈希表(二)-两个数组的交集
  • 图新地球移动端(外业精灵)产品入门指南
  • js的基础问题
  • 今日最佳WAF雷池社区版,tengine问题解决办法
  • Mongo开启执行splitVector命令
  • 部署带证书的docker高可用的私有仓库harbor
  • 暴力破解案例
  • c++-类与对象-对象特性-深拷贝和浅拷贝
  • Arthas 介绍,阿里开源线上JVM性能监控工具
  • LeetCode岛屿数量
  • 代码生成器技术乱弹五十六,超级语言和高级语言的根本区别
  • 【Spring相关技术】spring进阶-自定义请求报文转对象HttpMessageConverter
  • 深拷贝和浅拷贝
  • 金蝶K3-WISE和管易云单据接口对接
  • 荷兰Avantes光谱仪光老练日晒/紫外老化测量