Таблицы не создаются в Postgresql с помощью Gorm - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь создать таблицу из структуры, используя следующий код. Первоначально он работал путем жесткого кодирования учетных данных для тестирования. После перехода на env vars я хотел проверить, чтобы таблицы и схемы создавались, как и ожидалось.

Пока я пробовал:

  1. Удаление таблиц из базы данных, запустив "go run main.go".

    • Результат: успешно установлено соединение с БД, но таблицы не создаются.
  2. Удаление базы данных, воссоздание базы данных с помощью команды psql «CREATE DATABASE» и выполнение «go run main.go»

    • Результат: успешно установлено соединение с БД, но таблицы не создаются.
  3. Использовать автоматическую миграцию, но не удалось успешно создать таблицы.

  4. Отладка: Когда я запускаю его в режиме отладки, консоль отладки показывает, что она подключена, я не вижу признаков каких-либо ошибок. Я не кодировал много лет, все еще в процессе обучения.

Ниже приведены 2 файла: main.go и api.go (открывается дб)

MAIN.GO

import (
    "fmt"
    "log"
    "net/http"
    "time"

    "github.com/gorilla/handlers"
    "gitlab......"
    _ "gitlab....."
)

var err error

func main() {

api := controllers.API{}

// Using env vars from a config file
api.Initialize("user=%s password=%s dbname=%s port=%s sslmode=disable")

// BIND TO A PORT AND PASS OUR ROUTER IN
log.Fatal(http.ListenAndServe(":8000", handlers.CORS()(api.Router)))

if err != nil {
    panic(err.Error())
}

// Models
type Application struct {
    ID        string    `json:"id" gorm:"primary_key"`
    CreatedAt time.Time `json:"-"`
    UpdatedAt time.Time `json:"-"`
    Name      string    `json:"name"`
    Ci        string    `json:"ci"`

// CREATE TABLES AND SCHEMA IF TABLES DO NOT EXIST
if !api.Database.HasTable(&Application{}) {
    api.Database.CreateTable(&Application{})
    }

API.GO

func (api *API) Initialize(opts string) {

// Initialize DB
dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s port=%s sslmode=disable",
    config.DB_USER, config.DB_PASSWORD, config.DB_NAME, config.PORT)
api.Database, err = gorm.Open("postgres", dbinfo)

if err != nil {
    log.Print("failed to connect to the database")
    log.Fatal(err)

}

fmt.Println("Connection established")
log.Printf("Postgres started at %s PORT", config.PORT)
}

Я уже создал базу данных и могу установить соединение с базой данных. Просто не могу получить созданные таблицы.

Идеи

...