소스 검색

Fix "NOT NULL column with NULL" error in v5 SQLite migration

Previously, this migration would cause the error: "Cannot add a NOT NULL
column with default value NULL". This fixes that by setting the default
value for new columns to '' (empty string). It updates the query builder
to support this, too.
pull/275/head
Matt Baer 4 년 전
부모
커밋
471ef4d403
2개의 변경된 파일11개의 추가작업 그리고 7개의 파일을 삭제
  1. +5
    -2
      db/create.go
  2. +6
    -5
      migrations/v5.go

+ 5
- 2
db/create.go 파일 보기

@@ -177,7 +177,11 @@ func (c *Column) String() (string, error) {

if c.Default.Set {
str.WriteString(" DEFAULT ")
str.WriteString(c.Default.Value)
val := c.Default.Value
if val == "" {
val = "''"
}
str.WriteString(val)
}

if c.PrimaryKey {
@@ -250,4 +254,3 @@ func (b *CreateTableSqlBuilder) ToSQL() (string, error) {

return str.String(), nil
}


+ 6
- 5
migrations/v5.go 파일 보기

@@ -20,35 +20,35 @@ func oauthSlack(db *datastore) error {
Column(
"provider",
wf_db.ColumnTypeVarChar,
wf_db.OptionalInt{Set: true, Value: 24})),
wf_db.OptionalInt{Set: true, Value: 24}).SetDefault("")),
dialect.
AlterTable("oauth_client_states").
AddColumn(dialect.
Column(
"client_id",
wf_db.ColumnTypeVarChar,
wf_db.OptionalInt{Set: true, Value: 128})),
wf_db.OptionalInt{Set: true, Value: 128}).SetDefault("")),
dialect.
AlterTable("oauth_users").
AddColumn(dialect.
Column(
"provider",
wf_db.ColumnTypeVarChar,
wf_db.OptionalInt{Set: true, Value: 24})),
wf_db.OptionalInt{Set: true, Value: 24}).SetDefault("")),
dialect.
AlterTable("oauth_users").
AddColumn(dialect.
Column(
"client_id",
wf_db.ColumnTypeVarChar,
wf_db.OptionalInt{Set: true, Value: 128})),
wf_db.OptionalInt{Set: true, Value: 128}).SetDefault("")),
dialect.
AlterTable("oauth_users").
AddColumn(dialect.
Column(
"access_token",
wf_db.ColumnTypeVarChar,
wf_db.OptionalInt{Set: true, Value: 512,})),
wf_db.OptionalInt{Set: true, Value: 512}).SetDefault("")),
dialect.CreateUniqueIndex("oauth_users", "oauth_users", "user_id", "provider", "client_id"),
}

@@ -63,6 +63,7 @@ func oauthSlack(db *datastore) error {
wf_db.ColumnTypeVarChar,
wf_db.OptionalInt{Set: true, Value: 128})))
}

for _, builder := range builders {
query, err := builder.ToSQL()
if err != nil {


불러오는 중...
취소
저장