問題タブ [go-gorm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
224 参照

go - Gorm を使用して Has Many を取得する際の問題

ポッドキャストからエピソードを取得しようとすると、invalid association []. 私が間違っているのかわかりません。

0 投票する
1 に答える
2985 参照

go - gormでデータベースからアイテムの範囲を削除する方法

gorm クエリを実行してテーブルから行の範囲を削除するたびに、次のエラーが発生します。

sqlite3 でクエリを直接実行すると、問題なく返されます

サンプルコード

0 投票する
1 に答える
2200 参照

go - Go: DB 初期化で複数のパッケージからテストを実行

このプロジェクト構造を持つGOプロジェクトがあります(各パッケージにこの種のファイルが複数あります)。

user.go 内には、User 構造体と、ユーザーを作成/取得/更新する関数があります (私は GORM を使用していますが、これは問題ではありません)。user_test.go で。

異なるファイルごとに (すべてのデータを削除するか、特定の状態で) DB をクリーンアップしたいので、ファイルごとに 1 つのスイート (Testify を使用) を作成してから、SetupSuite 関数を使用しようとしましたが、動作は決定論的ではないようで、おそらく私は何か間違ったことをしています。

だから私の質問は:

  • DB接続を共有する最良の方法はどれですか? グローバル変数を使用するのが最善の選択肢ですか?
  • DB にテーブルを一度作成し、各 file_test.go を実行する前にカスタム データで DB を初期化する最良の方法はどれですか?

現在、私も奇妙なバグを抱えています:実行中

すべて正常に動作しますが、実行すると (すべてのパッケージをテストするため)

決定論的ではないように見えるエラーがあります。そのため、DB 接続が適切に処理されていないと推測しています

0 投票する
2 に答える
10809 参照

go - gorm db.First() が「無効なメモリアドレスまたは nil ポインター逆参照」でパニックになるのはなぜですか?

何かばかげたことをしたのか、それとも gorm でバグを見つけたのかわかりません。「無効なメモリ アドレスまたは nil ポインターの逆参照」が何を意味するかはよく知っていますが、なぜここに表示されるのかについては完全に当​​惑しています。

要するに、私は電話をかけdb.First()、明らかな理由もなくパニックを起こします.

私のコードの関連ビット:

dbパッケージ内で開かれmain()、パッケージ変数として格納されます。これはあまりきれいに見えませんが、うまくいくようです...

パニック:

...私のコードの28行目はどこですかquery := db.First(&m, vars["id"])

gormとfunctionの指摘された行を確認First()しましたが、これもあまり明白ではありません。

何が起こっているのかを把握するために、コードに次の変更を加えました。

最初の試み: 文字列が渡されたことについて不平を言っていますか? 代わりに整数を与えましょう。結局のところ、この例では整数を使用しています。

まったく同じ場所で、再びパニックに陥ります。

2 回目の試行: 変数mを間違った方法で作成しましたか? newたぶん、最初に割り当てる必要があります。

まったく同じ場所で、再びパニックに陥ります。

3 回目の試行: ゴリラ/マルチプレクサが誤動作した場合に備えて、検索する ID をハードコードしただけです。

まったく同じ場所で、再びパニックに陥ります。

最後に、空のデータベース テーブル、データが入力されたテーブルが存在する ID を要求するテスト、データが入力されたテーブルが存在しない ID を要求するテストを行いました。3 つのケースすべてで、同じパニックが発生します。

すべての中で最も興味深い部分は、どうやら net/http がパニックを回復していることです。次にnotFoundHandler()実行すると、ブラウザーにテンプレート出力が表示されます。

現在、mattn/go-sqlite3ドライバーを使用しています。

私の環境は、Fedora RPM パッケージで提供されている cgo 1.4.2 を使用した Fedora 22 x86_64 です。

どうしたの?このパニックはどこから来るのですか?どうすれば修正できますか?

0 投票する
1 に答える
186 参照

go - 関数がコードで宣言されているが呼び出されていない場合にパニックに陥る

コンテキスト: https://github.com/fusspawn/tserver/blob/master/app/controllers/gorp.go

gorm セットアップを取得しようとする一環として、標準の revel/gorp の例を変換しようとしました。

でも。Begin()、Commit()、Rollback() メソッドが定義されていても、パニックを引き起こすには十分です。

メソッド定義をコメントアウトすると、パニックが停止します。これらのメソッドを呼び出さないと (revel.InterceptMethod 呼び出しがコメントアウトされていることに注意してください)、パニックが発生する可能性があることを理解できないようです:/

0 投票する
1 に答える
886 参照

go - golang orm ライブラリ経由で関連付けを作成できません

golang orm ( https://github.com/jinzhu/gorm/ ) で関連付け機能を使用しようとしましたが、非常に単純な関連付けを作成できません。以下の例では、user テーブルにはデータが含まれていますが、email テーブルには含まれていません。私はたくさんのことを試しましたが、おそらく基本的なものが欠けていますが、github/stackoverflow で正しい答えを見つけることができませんでした。

コード :

go run main.go は次の出力を出力します 2015/09/30 17:25:04 Initializing Database with %!(EXTRA string=)

[2015-09-30 17:25:04] [3.21ms] CREATE TABLE "user" ("name" varchar(255))

[2015-09-30 17:25:04] [4.01ms] CREATE TABLE "email" ("address" varchar(255) )

[2015-09-30 17:25:04] [0.54ms] 「ユーザー」(「名前」) 値 (「金珠」) に挿入

ここで何が欠けているのかわからない - 回答をいただければ幸いです!

0 投票する
0 に答える
1366 参照

postgresql - GORM many2many join でデフォルトとは異なる結合テーブル列を使用する

gorm を使用して、構造体からデータベースへのマッピングを管理しています。現在、API にラップしようとしている既存のスキーマがあります。問題は、構造体の 1 つにmany2many、デフォルトの列名を使用しない別のテーブルを介した結合があることです。

golang コード

テーブルに参加

結果のクエリ出力

どんな助けでも大歓迎です。

ありがとう!