質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

2696閲覧

gormで作成したテーブルを削除する方法

退会済みユーザー

退会済みユーザー

総合スコア0

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2020/02/05 13:54

db.CreateTable(&models.モデル構造体{})

でテーブルを作成し

db.DropTable(&models.モデル構造体{})

で削除をし

db.CreateTable(&models.モデル構造体{})

再度作成(構造体の中身のカラム名は変更)しても最初に作成したカラム名のテーブルができてしまうのですがどうすれば削除ができるのでしょうか?

http://gorm.io/docs/delete.html
「ドキュメントにオートマイグレーションはテーブル作成し、存在しないカラムやインデックスを追加するのみで、あなたのデータを守るために存在するカラムの変更や削除は行いません」とあったのでこれの事かなとは思ったのですがCreateTable=マイグレーションになるのでしょうか?
また削除は行わないとなると同じテーブルでカラムを変更する事は絶対にできないと言う事になるので新しく別名のテーブルを作成するしか方法はないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

p1

go

1type Product struct { 2 gorm.Model 3 Code string 4 Price uint 5}

p2

go

1type Product struct { 2 gorm.Model 3 Code string 4 Price uint 5}

go

1package main 2 3import ( 4 "github.com/jinzhu/gorm" 5 _ "github.com/jinzhu/gorm/dialects/sqlite" 6 7 "sample/p1" 8 "sample/p2" 9) 10 11func main() { 12 db, err := gorm.Open("sqlite3", "test.db") 13 if err != nil { 14 panic("データベースへの接続に失敗しました") 15 } 16 defer db.Close() 17 18 db.CreateTable(&p1.Product{}) 19 // ******** 20 db.DropTable(&p1.Product{}) 21 db.CreateTable(&p2.Product{}) 22}

// ********時点

shell

1$ sqlite3 test.db ".schema products" 2CREATE TABLE IF NOT EXISTS "products" ("id" integer primary key autoincrement,"created_at" datetime,"updated_at" datetime,"deleted_at" datetime,"code" varchar(255),"price" integer ); 3CREATE INDEX idx_products_deleted_at ON "products"(deleted_at) ;

最後まで完走したあと

shell

1$ sqlite3 test.db ".schema products" 2CREATE TABLE IF NOT EXISTS "products" ("id" integer primary key autoincrement,"created_at" datetime,"updated_at" datetime,"deleted_at" datetime,"code" varchar(255) ); 3CREATE INDEX idx_products_deleted_at ON "products"(deleted_at) ;

問題なく再度CreateTableできているようです。

投稿2020/02/14 04:42

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/15 08:47

すいません、試して頂いてありがとうございます 再度見直してみたところmodelフォルダとmodelsフォルダがあり干渉していたのが問題だということがわかりました 初歩的なミスで申し訳ございません ご回答ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問