MySQL迁移人大金仓Kingbase 常见问题

Mybatis

问题1:数据怎么迁移?

解决:用官方提供的迁移工具(安装数据库会自动安装)

问题2: 错误: 关系 “dual” 不存在

解决:select 1 from dual 改成: spring.datasource.druid.validationQuery=SELECT 1

问题3:反引号报错:table

解决:改成双引号:“table”

问题4:表存在,字段也存在,却提示字段不存在

解决:sys_开头的表,多数是kb数据库系统表,业务表有同名的,需要在业务sql表面前加上模式名 schema_name.sys_xxx

问题5:没有find_in_set函数

解决:自定义函数:

    create or replace function FIND_IN_SET(text, text)
    returns bigint
    as
    $$
    select coalesce(min(sn), 0)
    from unnest(string_to_array($2, ',')) with ordinality t(val, sn)
    where val = $1
    $$ language sql;

自定义find_in_set后,提示:错误: WHERE 的参数必需是类型boolean, 而不是类型bigint

因为find_in_set返回值是0到n,大于0表示参数2里面存在参数1,所以根据原sql的需求做如下改动:

-- 原sql:
select * from table t where find_in_set('1', t.a);
-- 改为:
select * from table t where find_in_set('1', t.a) > 0;
问题6:update set xxx = ‘’ 时,提示 空值违反了非空约束

解决:修改kingbase安装目录下的文件:/data/kingbase.conf ora_input_emptystr_isnull = on 改为 off

问题7:kingbase没有uuid()

解决:SYS_GUID_NAME()替代:select SYS_GUID_NAME() from dual;

问题8:用kingbase自带的数据库管理工具,把数据从测试库导入生产库后,表的owner默认为system

解决:

select schemaname,relname  from sys_stat_user_tables WHERE schemaname='govo_feedback'; -- 查所有表名
-- 修改owner
ALTER TABLE "govo_feedback"."question" OWNER TO "govo_feedback";
GRANT ALL ON TABLE "govo_feedback"."question" TO "govo_feedback";

问题9:提示TINYINT无法转到boolean

解决:表字段类型从tinyint改成boolean.(或者在用kts迁移工具迁移时,映射tinyint到boolean)

JPA

问题9:org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect’ not set

解决:添加配置:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Kingbase8Dialect
问题10:spring.jpa.database=KINGBASE 不存在

解决:换成spring.jpa.database=POSTGRESQL

问题11:java.lang.IllegalStateException: dbType not support : null, url null

解决:WallFilter报的错:

java.lang.IllegalStateException: dbType not support : null, url null
        at com.alibaba.druid.wall.WallFilter.init(WallFilter.java:167)
        at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:839)
        at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1376)

spring.datasource.druid.filters=stat,wall,slf4j

去掉wall,改成:spring.datasource.druid.filters=stat,slf4j

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在将MySQL迁移人大金仓时,需要注意以下几点。首先,目前只支持迁移MySQL 5.1版本,其他版本可能会导致迁移过程中卡死。如果是高版本的MySQL,建议先将数据库使用Navicat迁移至低版本,然后再使用人大金仓进行迁移。其次,如果在迁移过程中无法检测到所有的表、函数、触发器等内容,可以使用人大金仓的社区工具进行迁移。先迁移数据库结构等内容,最后再利用数据库工具迁移数据。 具体操作步骤如下: 1. 打开人大金仓迁移工具,选中源数据库中所有的表和函数等内容。 2. 将选中的内容拖动到右侧的目标数据库(也称为模式)中。 3. 在右侧可以看到所有的函数、表和触发器等。 4. 确认无误后,点击“确定”按钮,即可完成MySQL迁移人大金仓的操作。 需要注意的是,以上是基本的迁移步骤,具体操作可能因环境和迁移工具的版本而有所不同。在进行迁移操作之前,建议先备份好原始数据库,以防止数据丢失。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [人大金仓Kingbase数据库迁移——使用大金仓数据库迁移工具进行迁移](https://blog.csdn.net/csdn_db96/article/details/109166351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值