DBAGOD

Results 36 comments of DBAGOD

应该是在oracle创建表的时候名称用双引号包围起来了 麻烦在oracle查下下面的数据字典视图, select TABLE_NAME from user_tables where upper(table_name)=upper('表名');

麻烦也发下出错的时候在oracle中表名称字符串以及yml配置文件中自定义表名称部分

> ![image](https://private-user-images.githubusercontent.com/16891028/299933946-5184c478-0612-4458-a075-c4d74d65cd18.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDYyNjEwMDMsIm5iZiI6MTcwNjI2MDcwMywicGF0aCI6Ii8xNjg5MTAyOC8yOTk5MzM5NDYtNTE4NGM0NzgtMDYxMi00NDU4LWEwNzUtYzRkNzRkNjVjZDE4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMjYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTI2VDA5MTgyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEyZGZjYjI0NjFmODUxMmYwYjJlZjk1MGU1NWEyNmIxNWJmMmEyYTQwYWZkOWIwNjE2OGQ4OGZjNGMyY2YyOGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.AqS8dTJhplpX3u1j1lwggxpvLz8vgWCbS4E4CSPXIQM) > 这个是配置,我不理解你的意思,在Oracle中表是大写,我首先是只创建表结构不导入数据,这个没有问题,但是在导入数据,有一些表导入失败,我使用手动导入数据,在Mysql 表和Oracle一样是大写的,但是我配置文件不管用大写还是小写,运行的时候,他都会转成小写,就出现找不到表了,我只能在数据库把表名改成小写,才能导入数据. > 还有一个问题,在插入文本出现这个. > ![image](https://private-user-images.githubusercontent.com/16891028/299933804-bd527a2a-9b34-46b6-a780-bd9c6f16d6fd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDYyNjEwMDMsIm5iZiI6MTcwNjI2MDcwMywicGF0aCI6Ii8xNjg5MTAyOC8yOTk5MzM4MDQtYmQ1MjdhMmEtOWIzNC00NmI2LWE3ODAtYmQ5YzZmMTZkNmZkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMjYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTI2VDA5MTgyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRhNTRkOTA0MzI4YWRiYzIwZGFlNGMwNzU0N2YyMWVjNWJhM2RkYzIyZGExZDk5M2UxMTA1YzhiMWY2OWNkOGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tLzQui__HLf3Oq18zpTuaKm2I2aR_EwvMvA1BiMjaJU) 这个是在处理blob大字段类型,麻烦提供下MySQL的版本,以及大概的源库表结构

> 我使用的Mysql是mariaDb/10.11.6版本 请问下,remark这个字段在oracle是什么数据类型

方便的话,麻烦提供下Oracle表结构DDL语句,表名以及列字段你可以做脱敏处理, 请使用下面sql获取oracle数据字典中的表结构发我 select dbms_metadata.get_ddl('TABLE','表名','oracle连接用户名') from dual; ![image](https://github.com/iverycd/OracleSync2MySQL/assets/35289289/944007d4-d073-41fe-837d-b4e8ff304d64)

麻烦把MySQL的text类型改成longtext类型试试

> @iverycd 我Clone你的代码在Win10下面编译,没有改动代码重新编译运行,执行没有报错,数据已经同步正常,感谢你的工具分享,你的工具应该是Linux下编译的?执行就出现问题了? 感谢您提供的表结构,可惜我在本地环境无法复现,后期会对此issue进行深度分析 由于连接Oracle需要使用godror这个库,他不支持跨平台交叉编译,所以我在每个平台上的操作系统上进行了独立编译,Windows编译环境是Win 11 22H2

@AnisJiang 问题我复现出来了,跟golang的编译平台无关,原因是在于MySQL数据库字符集使用了uft8字符集或者列字段属性设置了utf8,之前我个人的环境一直都是utf8mb4,所以没遇到此类问题。另外还是十分感谢您的提问,有啥问题我都会尽快处理 ### 问题场景复现: ![image](https://github.com/iverycd/OracleSync2MySQL/assets/35289289/11407ce9-f1cb-4783-8f49-18153d9e58b0) ### 问题排查思路: 1、报错中的16进制字符串,解码之后为字符`􀀊` ```sql Oracle数据库内16进制转字符串SQL select sys.UTL_raw.cast_to_varchar2('F480808A') from dual; MySQL数据库内16进制转字符串SQL select CONVERT(0xF480808A USING utf8mb4); ``` ![image](https://github.com/iverycd/OracleSync2MySQL/assets/35289289/8b0b10b4-598a-4001-97d3-f68a26645eb5) 2、字符`􀀊`不能存储在utf8字符集的库或者列字段内 原因如下: MySQL 中 utf8 的全名应该叫——utf8mb3(max byte 3),其编码的最大字符能存储为 3...

@WenTao-Love 抱歉,我这里没有oceanbase环境,看来是要在迁移数据前就要把所有ddl拼接好

> @iverycd 这样子,需要改动代码比较多,将原来的tablemeta几个方法都合并在一起? 麻烦空了之后提供下ob数据库中正确创建表的ddl(创建表的时候包含主键或者其他依赖对象示例),在下个版本中我考虑兼容下