Я пытаюсь создать таблицу из структуры, используя следующий код. Первоначально он работал путем жесткого кодирования учетных данных для тестирования. После перехода на env vars я хотел проверить, чтобы таблицы и схемы создавались, как и ожидалось.
Пока я пробовал:
Удаление таблиц из базы данных, запустив "go run main.go".
- Результат: успешно установлено соединение с БД, но таблицы не создаются.
Удаление базы данных, воссоздание базы данных с помощью команды psql «CREATE DATABASE» и выполнение «go run main.go»
- Результат: успешно установлено соединение с БД, но таблицы не создаются.
Использовать автоматическую миграцию, но не удалось успешно создать таблицы.
Отладка: Когда я запускаю его в режиме отладки, консоль отладки показывает, что она подключена, я не вижу признаков каких-либо ошибок. Я не кодировал много лет, все еще в процессе обучения.
Ниже приведены 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)
}
Я уже создал базу данных и могу установить соединение с базой данных. Просто не могу получить созданные таблицы.
Идеи