This commit is contained in:
Lunny Xiao 2020-07-08 20:45:50 +08:00
parent e370537ad1
commit 00ede8b543
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 10 additions and 3 deletions

View File

@ -424,10 +424,15 @@ func formatColumnValue(dstDialect dialects.Dialect, d interface{}, col *schemas.
return "0" return "0"
} }
if col.SQLType.IsText() || col.SQLType.IsTime() { if col.SQLType.IsText() {
var v = fmt.Sprintf("%s", d)
return "'" + strings.Replace(v, "'", "''", -1) + "'"
} else if col.SQLType.IsTime() {
var v = fmt.Sprintf("%s", d) var v = fmt.Sprintf("%s", d)
if strings.HasSuffix(v, " +0000 UTC") { if strings.HasSuffix(v, " +0000 UTC") {
return fmt.Sprintf("'%s'", v[0:len(v)-len(" +0000 UTC")]) return fmt.Sprintf("'%s'", v[0:len(v)-len(" +0000 UTC")])
} else if strings.HasSuffix(v, " +0000 +0000") {
return fmt.Sprintf("'%s'", v[0:len(v)-len(" +0000 +0000")])
} }
return "'" + strings.Replace(v, "'", "''", -1) + "'" return "'" + strings.Replace(v, "'", "''", -1) + "'"
} else if col.SQLType.IsBlob() { } else if col.SQLType.IsBlob() {

View File

@ -101,13 +101,15 @@ func TestDump(t *testing.T) {
assertSync(t, new(TestDumpStruct)) assertSync(t, new(TestDumpStruct))
testEngine.Insert([]TestDumpStruct{ cnt, err := testEngine.Insert([]TestDumpStruct{
{Name: "1", IsMan: true}, {Name: "1", IsMan: true},
{Name: "2\n"}, {Name: "2\n"},
{Name: "3;"}, {Name: "3;"},
{Name: "4\n;\n''"}, {Name: "4\n;\n''"},
{Name: "5'\n"}, {Name: "5'\n"},
}) })
assert.NoError(t, err)
assert.EqualValues(t, 5, cnt)
fp := fmt.Sprintf("%v.sql", testEngine.Dialect().URI().DBType) fp := fmt.Sprintf("%v.sql", testEngine.Dialect().URI().DBType)
os.Remove(fp) os.Remove(fp)
@ -118,7 +120,7 @@ func TestDump(t *testing.T) {
sess := testEngine.NewSession() sess := testEngine.NewSession()
defer sess.Close() defer sess.Close()
assert.NoError(t, sess.Begin()) assert.NoError(t, sess.Begin())
_, err := sess.ImportFile(fp) _, err = sess.ImportFile(fp)
assert.NoError(t, err) assert.NoError(t, err)
assert.NoError(t, sess.Commit()) assert.NoError(t, sess.Commit())