mysql模式,社区版;建了一个大写的表比如T_PRODUCT,用obloader导入t_product.csv,–table ‘T_PRODUCT’ 导入失败,报Load csv file 失败;报错代码行DBUtils.calculatePartitionId(Line:1670)。但是把T_PRODUCT表删了,改成小写名字t_product,导入同一个csv,–table 't_product’就成功导入。
重新建小写表名后,–table名字后表名改为小写表名就可以导入成功
用navicate跑建表脚本,先建大写表,再建小写表,也会报表已存在。理论上不区分大小写的吧,还是只支持小写?
OceanBase MySQL Mode 和 MySQL Community Server 行为是一致的,默认创建的表名是小写的。
怎么理解这句话?
MySQL > create table `TEST` (c1 INT); -- 默认创建出来的表名是小写的;
上述语句等同于 create table test
(c1 INT);
如何让 MySQL 创建出来大写的表名呢?(即:大小写敏感)
MySQL > show variables like ‘lower_case_table_names’; // 修改变量的值,打开大小写敏感模式
上述变量打开以后,create table test
与 create table TEST
是不同的表名。
提示:obloader/obdumper 兼容数据库的行为,默认是小写的,数据文件名也要求是小写的。如果要考虑大写的文件名,可以指定 --table ‘[TEST]’ 表示数据库中的表是 TEST 而不是 test,同时磁盘的文件也要求是 TEST.csv 而不是 test.csv。当数据库打开大小写敏感模式,这种设计是为了防止数据库中同时存在 TEST,test 两张表。obloader 可以正常识别文件和表结构。
–table ‘test’ 与 --table ‘TEST’ 在 MySQL 模式下都表示小写的 test;
–table ‘test’ 与 --table ‘[TEST]’ 在 MySQL 模式下分别表示 test 和 TEST;
中括号用来显式指定大写的表名,否则 obloader 像 MySQL一样默认把表名转换成小写的。
检查一下租户的系统参数lower_case_table_names,是大小写铭感的开关。