問題タブ [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.
go - Gorm を使用して Has Many を取得する際の問題
ポッドキャストからエピソードを取得しようとすると、invalid association []
. 私が間違っているのかわかりません。
go - gormでデータベースからアイテムの範囲を削除する方法
gorm クエリを実行してテーブルから行の範囲を削除するたびに、次のエラーが発生します。
sqlite3 でクエリを直接実行すると、問題なく返されます
サンプルコード
go - Go: DB 初期化で複数のパッケージからテストを実行
このプロジェクト構造を持つGOプロジェクトがあります(各パッケージにこの種のファイルが複数あります)。
user.go 内には、User 構造体と、ユーザーを作成/取得/更新する関数があります (私は GORM を使用していますが、これは問題ではありません)。user_test.go で。
異なるファイルごとに (すべてのデータを削除するか、特定の状態で) DB をクリーンアップしたいので、ファイルごとに 1 つのスイート (Testify を使用) を作成してから、SetupSuite 関数を使用しようとしましたが、動作は決定論的ではないようで、おそらく私は何か間違ったことをしています。
だから私の質問は:
- DB接続を共有する最良の方法はどれですか? グローバル変数を使用するのが最善の選択肢ですか?
- DB にテーブルを一度作成し、各 file_test.go を実行する前にカスタム データで DB を初期化する最良の方法はどれですか?
現在、私も奇妙なバグを抱えています:実行中
すべて正常に動作しますが、実行すると (すべてのパッケージをテストするため)
決定論的ではないように見えるエラーがあります。そのため、DB 接続が適切に処理されていないと推測しています
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 です。
どうしたの?このパニックはどこから来るのですか?どうすれば修正できますか?
go - 関数がコードで宣言されているが呼び出されていない場合にパニックに陥る
コンテキスト: https://github.com/fusspawn/tserver/blob/master/app/controllers/gorp.go
gorm セットアップを取得しようとする一環として、標準の revel/gorp の例を変換しようとしました。
でも。Begin()、Commit()、Rollback() メソッドが定義されていても、パニックを引き起こすには十分です。
メソッド定義をコメントアウトすると、パニックが停止します。これらのメソッドを呼び出さないと (revel.InterceptMethod 呼び出しがコメントアウトされていることに注意してください)、パニックが発生する可能性があることを理解できないようです:/
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] 「ユーザー」(「名前」) 値 (「金珠」) に挿入
ここで何が欠けているのかわからない - 回答をいただければ幸いです!
postgresql - GORM many2many join でデフォルトとは異なる結合テーブル列を使用する
gorm を使用して、構造体からデータベースへのマッピングを管理しています。現在、API にラップしようとしている既存のスキーマがあります。問題は、構造体の 1 つにmany2many
、デフォルトの列名を使用しない別のテーブルを介した結合があることです。
golang コード
テーブルに参加
結果のクエリ出力
どんな助けでも大歓迎です。
ありがとう!