golang migrate 사용시 에러

필요성

예전 golang 코드에 사용하고 있는 db migration 관리 라이브러리: migrate이 라이브러리는 기존 레포에서,
GitHub – mattes/migrate: Database migrations. CLI and Golang library. ->
아래 레포로 리포지토리가 변경되어 관리 중에 있었습니다.
GitHub – golang-migrate/migrate: Database migrations. CLI and Golang library.

기존 코드 수정이 필요해서 README 를 읽기 위해 들어왔다가 기존 코드가 예전과는 다르게 변경, 관리되는 것을 알게되어서 레포 변경을 하기로 마음을 먹었습니다.

문제

migrate up


변경 후 migrate up 실행시에 아래와 같은 문제가 발생했습니다.

error: pq: column “dirty” does not exist in line 0 · Issue #34 · golang-migrate/migrate · GitHub

아마 dirty 컬럼이 추가 된 듯 합니다.
dirty column 을 수동으로 추가해줍니다.

alter table schema_migrations add column dirty boolean not null default false;

다시 migrate 를 실행하면 정상동작합니다.

Postgres driver 를 사용할때 발생하는 문제


  • Postgres driver 를 사용할때 발생하는 문제
  • Migrate 라이브러리 import 후에 New, Up 코드 작성
  • Compile and Run
  • have panic….
panic: sql: Register called twice for driver postgres

goroutine 1 [running]:
database/sql.Register(0x1f34e5d, 0x8, 0x2794580, 0x281b590)
        /Users/ktg/.gvm/gos/go1.9/src/database/sql/sql.go:50 +0x1ad
github.com/golang-migrate/migrate/vendor/github.com/lib/pq.init.0()
        /Users/ktg/go/src/github.com/golang-migrate/migrate/vendor/github.com/lib/pq/conn.go:49 +0x5c
github.com/golang-migrate/migrate/vendor/github.com/lib/pq.init()
        <autogenerated>:1 +0x782
github.com/golang-migrate/migrate/database/postgres.init()
        <autogenerated>:1 +0x7d
devops-mocha3/cmd/mocha/setup.init()
        <autogenerated>:1 +0x5d
main.init()
        <autogenerated>:1 +0x78

처음엔 뭘 잘못 했나 싶어서 이것 저것 해봤는데, 동일 증상…

그러다 이런 글 발견
Driver is being registered twice · Issue #238 · lib/pq · GitHub

이번 문제는 vendor에 있는 파일(lib/pg)을 한번 호출 하고, 다시 GOPATH 에 있는 파일을 호출한 것.

수정을 위해 dep ensure 실행을 해줍니다.
그리고 다시 컴파일 후 실행하면 정상동작합니다.

Author :
github: https://github.com/9to6

카테고리

Count per Day

  • 29695Total visitors:
  • 18Visitors today:
  • 112Visitors yesterday:
  • 661Visitors last week:
  • 92Visitors per day:
  • 2017년 4월 7일Counter starts on: