mysql only accept offset with limit together

This commit is contained in:
Jinzhu 2017-07-03 11:26:31 +08:00
parent eae7f6be60
commit d395b35025
2 changed files with 17 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"reflect" "reflect"
"regexp" "regexp"
"strconv"
"strings" "strings"
"time" "time"
"unicode/utf8" "unicode/utf8"
@ -126,6 +127,21 @@ func (s mysql) RemoveIndex(tableName string, indexName string) error {
return err return err
} }
func (s mysql) LimitAndOffsetSQL(limit, offset interface{}) (sql string) {
if limit != nil {
if parsedLimit, err := strconv.ParseInt(fmt.Sprint(limit), 0, 0); err == nil && parsedLimit >= 0 {
sql += fmt.Sprintf(" LIMIT %d", parsedLimit)
}
if offset != nil {
if parsedOffset, err := strconv.ParseInt(fmt.Sprint(offset), 0, 0); err == nil && parsedOffset >= 0 {
sql += fmt.Sprintf(" OFFSET %d", parsedOffset)
}
}
}
return
}
func (s mysql) HasForeignKey(tableName string, foreignKeyName string) bool { func (s mysql) HasForeignKey(tableName string, foreignKeyName string) bool {
var count int var count int
s.db.QueryRow("SELECT count(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA=? AND TABLE_NAME=? AND CONSTRAINT_NAME=? AND CONSTRAINT_TYPE='FOREIGN KEY'", s.CurrentDatabase(), tableName, foreignKeyName).Scan(&count) s.db.QueryRow("SELECT count(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA=? AND TABLE_NAME=? AND CONSTRAINT_NAME=? AND CONSTRAINT_TYPE='FOREIGN KEY'", s.CurrentDatabase(), tableName, foreignKeyName).Scan(&count)

View File

@ -106,7 +106,7 @@ func TestEmbeddedMany2ManyRelationship(t *testing.T) {
t.Errorf("no error should return when delete embedded many2many relationship, but got %v", err) t.Errorf("no error should return when delete embedded many2many relationship, but got %v", err)
} }
association := DB.Model(person).Debug().Association("Addresses") association := DB.Model(person).Association("Addresses")
if count := association.Count(); count != 1 || association.Error != nil { if count := association.Count(); count != 1 || association.Error != nil {
t.Errorf("Should found one address, but got %v, error is %v", count, association.Error) t.Errorf("Should found one address, but got %v, error is %v", count, association.Error)
} }