問題タブ [dbix-class]
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.
mysql - MySql:トランザクションはデッドロックを検出しませんか?
次の perl コードを検討してください。
更新はトランザクションによって保護されているため、2 つのプロセスが「num」フィールドを更新しようとすると、2 つ目のプロセスは競合に負けたため、何らかのエラーで失敗するはずです。Interbase では、これを「デッドロック」エラーと呼んでいます。ただし、MySQL は update() 呼び出しで一時停止しますが、最初の呼び出しが commit を呼び出した後は喜んで続行します。2 番目のプロセスは num の「古い」値を持つため、インクリメントが正しくありません。観察:
どちらの場合も、結果の値は「1015」です。これはどのように正しいのでしょうか?
perl - DBIx::Class::Schema::Loader の出力を整理するにはどうすればよいですか?
DBIx::Class
私たちは現在、私たちのチームに紹介していDBIx::Class::Schema::Loader
ます。ただし、コード スタイルには厳しい要件があります。つまり、これまでコードを生成したことがないためPerl::Tidy
、スクリプトの一部として取得する必要があります。pre-commit
ここで、Schema::Loader
生成されるコードがクリーンで整頓されていることを確認する必要があります。perltidy
DBIC の MD5 ハッシュが台無しになるため、コミット前にコードを実行することはできません。したがって、統合されたポストプロセッサSchema::Loader
が私の好みであり、おそらく唯一の実行可能なソリューションです。それでも、この問題をどのように処理しますか?
編集DBIx::Class::Schema::Loader::Base
パラメーターを取得した場合は、パラメーターを使用するようにパッチを適用することもできます。perltidy
preprocess
perl - Perl DBIx :: Class-new()を使用する場合のデフォルト値?
DBIx :: Class ResultSourceでnew()メソッドを使用して(一時的な可能性のある)変数を作成する場合、DBICスキーマで指定されたデフォルト値(そこからテーブルを作成するために指定した)が属性に入力されていないようです。スキーマ)。
現在、このようなクラスの1つ(これが問題となった最初のケース)に対して1つのデフォルト値を作成しています。
そのクラス(つまり、属性queue => DEFAULT_QUEUE_VAL)。ただし、長期的には、さまざまなデフォルト値を持ついくつかのDBICクラスがあり、さまざまな場合すべてに上記のロジックを複製することは避けたいと考えています。
これを行うために利用できるCPANモジュール/プラグインはありますか?CPANの(明らかに大雑把な)検索では何も見つかりませんでした。
編集:コードサンプルのゴミを修正しました。古いコードからcpしたことがわかりました。
sql - Perl の DBIx::Class $resultset->update が複雑な検索クエリで失敗するのはなぜですか?
次のようなPerl DBIx::Class検索があります。
そして、私は..
しかし、私はエラーが発生します...
DBI 例外: DBD::mysql::st の実行に失敗しました: SQL 構文にエラーがあります。1 行目の 'FOR REVOCATION '1' )' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください [for Statement "UPDATE wmv_attempt SET status = ? WHERE ( ARRAY(0xadf93a8) FOR REVOCATION ? )" with ParamValues: 0='revoking', 1=1] (eval 20938) 行 1
$rs->as_query()
検索に使用する SQL を取得する場合、次のようになります。
これはうまくいきます。
update()
結果セットで実行すると、WHERE句を正しく作成できないようです。
これはバグだと思います。
誰かが私が間違っているかもしれないことや別のアプローチを提案できますか?
ありがとう、トム
perl - DBIx::Class と Catalyst を使用して実行時に関係を追加するにはどうすればよいですか?
私が構築しているアプリケーションでは、ユーザーはテーブル間の関係を指定できます。
これは実行時にのみ決定するため、起動用のスキーマ モジュールで has_many 関係または belongs_to 関係を指定することはできません。
したがって、2 つのテーブルが与えられます。システムと場所、それらの間のレコードを結合する関係を追加したいと思います。
以下のソリューションの一部があります。
したがって、列fk0
は場所の主キーへの外部キー マッピングになりますid
。
関係への将来のアクセスを許可するには、再登録が必要であることはわかっていますが、それがわかりません。
perl - この単純なケースで、DBIx::Class の結果クラスをどのようにセットアップすればよいでしょうか?
3 つのテーブルで構成される次の単純化されたサンプル データベースがあるとします。
が与えられた場合event_id
、すべての主催者の名前を照会したり、 が与えられたperson_id
場合、この人物がイベントのゲストまたは作成者であるすべてのイベントの名前を検索したりしたい場合があります。
単純な SQL を使用してすべてを行う方法を知っています。DBIx::Classを使用する際に、どの結果クラスを設定する必要があり、どのような関係を指定する必要があるか教えていただけますか?
perl - DBIx::Class の結果をカスタム Moose クラスにマップする簡単な方法はありますか?
Moose のクラスを受講するのはちょっと面倒なようです。次に、DBIx::Classを使用して結果セットを取得し、結果セットをムース クラスに手動でマップします。
sql - DBIx::Class を使用して、ネストされた has_many または belongs_to 関係を作成するにはどうすればよいですか?
私のコードには、次の 3 つのクラスがForum
ありForum::Thread
ます。Forum::Post
私がやりたいことは、できればカスタム関数を作成せずに、クラスからForum::Post
クラスへの属している関係を作成し、has_many を使用Forum
してその逆を作成することです。(これは確かに、技術的な制限や実際の問題というよりも知的作業ですが、可能であれば知りたいです。)
コメントアウトされた行には、関係に関する私の意図が含まれていますが、現在の形式では機能しません。ドキュメントを調べてみましたが、この特定のケースに関連するものは見つかりません。
ポインタはありますか?
フォーラム クラス:
スレッドクラス:
投稿クラス:
PS:簡潔にするために、実際のコンテンツを保持するための追加の列は省略されています。
perl - DBIX::Class の使用時に Moose トリガーが起動しない
Moose は初めてで、DBIx::Class で使用しようとしています。基本的な DBIC のクエリと更新は機能しますが、属性を変更すると、書き込もうとしたトリガーが実行されません。
'isin' print 'FOO' のトリガーが表示されることを期待していますが、何も起こりません。パッケージから DBIx::Class を取り除くと、トリガーは期待どおりに実行されます。
DBIx::Class がトリガーの発火を妨げるような方法で値を設定していると思われます。
残念ながら、Moose での DBIx::Class の使用に関するリソースを見つけることができませんでした。私が書いたものは、ほとんどDBIx::Class と Mooseで見つけたものに基づいています。
DBIx::Class や Moose を間違って使用していますか? Mooseで使用すべき別のORMはありますか?
起動しないトリガーを含むパッケージ:
perl - Class::DBI から DBIx::Class への移行
現在、現在のアプリケーションを Class::DBI から移行するために、DBIx::Class に関する調査を行っています。正直なところ、DBIx::Class については、結果クラスの構成に関しては少しがっかりしています。Class::DBI を使用すると、コード ジェネレーターなしで on 関数を呼び出すだけで、モデルのメタデータをセットアップできます。私の質問は . .. DBIX::Class でも同じことができますか? クライアント側のトリガーが DBIx::Class でサポートされていないようです。または、間違ったドキュメントを見ていませんか?