Convert character to bytes and insert into table using latin1

This commit is contained in:
wangzihuacool 2022-08-03 11:43:18 +08:00
parent 7d8e4e8d3d
commit 113094bbd2
3 changed files with 11650 additions and 6 deletions

File diff suppressed because it is too large Load Diff

View File

@ -119,5 +119,5 @@ func (this *ConnectionConfig) GetDBUri(databaseName string) string {
if this.tlsConfig != nil { if this.tlsConfig != nil {
tlsOption = TLS_CONFIG_KEY tlsOption = TLS_CONFIG_KEY
} }
return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?timeout=%fs&readTimeout=%fs&writeTimeout=%fs&interpolateParams=%t&autocommit=true&charset=utf8mb4,utf8,latin1&tls=%s", this.User, this.Password, hostname, this.Key.Port, databaseName, this.Timeout, this.Timeout, this.Timeout, interpolateParams, tlsOption) return fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?timeout=%fs&readTimeout=%fs&writeTimeout=%fs&interpolateParams=%t&autocommit=true&charset=latin1&tls=%s", this.User, this.Password, hostname, this.Key.Port, databaseName, this.Timeout, this.Timeout, this.Timeout, interpolateParams, tlsOption)
} }

View File

@ -47,13 +47,10 @@ type Column struct {
func (this *Column) convertArg(arg interface{}, isUniqueKeyColumn bool) interface{} { func (this *Column) convertArg(arg interface{}, isUniqueKeyColumn bool) interface{} {
if s, ok := arg.(string); ok { if s, ok := arg.(string); ok {
// string, charset conversion arg2Bytes := []byte(s)
if encoding, ok := charsetEncodingMap[this.Charset]; ok { arg = arg2Bytes
arg, _ = encoding.NewDecoder().String(s)
}
if this.Type == BinaryColumnType && isUniqueKeyColumn { if this.Type == BinaryColumnType && isUniqueKeyColumn {
arg2Bytes := []byte(arg.(string))
size := len(arg2Bytes) size := len(arg2Bytes)
if uint(size) < this.BinaryOctetLength { if uint(size) < this.BinaryOctetLength {
buf := bytes.NewBuffer(arg2Bytes) buf := bytes.NewBuffer(arg2Bytes)