位于MySQL列中的字符串未能将其插入RedShift上的完全相同的列中,说明DDL长度误差



我的理解是,进入mysql字符串列Varchar(255(的字符串应该转到Varchar(255(的红移列(我的理解(。(UTF8 charset(

我被困在失败的用例中。

我有一个长度255个字符的样本字符串,

'测试数据:在12-10-20的23:43 IST左右,由于ABC中发现的卖方联系电话,宣布了ABC事件。所需的字段在屏幕上显示为空的,"计算中的不良响应/err1 9错误",也无法激活符号'=>长度255

mysql

CREATE TABLE `test_varchar255` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`token` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

insert into test_varchar255 values (1, 'Test data: Around 23:43 IST on 
12-10-20, a ABC event was announced due to seller contact number found 
missing from abc. The required field is showing empty with message on 
screen “Bad Response/err1 9 error in the comput”, and also unable to 
activate signs')

插入成功

RedShift

CREATE TABLE test_varchar255 (
id                   BIGINT DEFAULT NULL encode mostly32,
string_01            VARCHAR(255) DEFAULT NULL ENCODE LZO
)

 insert into test_varchar255 values (1, 'Test data: Around 23:43 IST on 
12-10-20, a ABC event was announced due to seller contact number found 
missing from abc. The required field is showing empty with message on 
screen “Bad Response/err1 9 error in the comput”, and also unable to 
activate signs')

错误:类型符号变化太长(255(查询失败PostgreSql说:字符变化的类型太长(255(

试图找出确切的问题,任何帮助?

varchar(255)表示您具有可变长度的字符串,其最大长度为255。但是,重要的是要注意,如果有一个编码,该编码使用3个字节(例如UTF8(,则您有256 * 3 = 768字节。如果您的其他列将字符编码为两个字节,则可以将最大存储256 * 2 = 512个字节存储,因此,您尝试将768个字符的字符串存储到一个最大大小为512字节的位置。因此,您经历的只是症状。

有效问题的性质取决于您的实际情况。如果您需要显示无法由LZO表示的字符,请更改目标表的编码。如果没有此类字符,请确保您的字符串在尝试存储之前在LZO中很好地表示。

最新更新