保存時のGrailsエラー:読み取り専用トランザクションでNEXTVAL()を実行できません -- grails フィールド 関連 問題

grails error on save: cannot cannot execute nextval() in a read-only transaction












0
vote

問題

日本語

(From From from from from from from from from for from from from from for scratch)のgrailsの作成に問題がありません。以下は、コントローラ(評価)のメソッドからのコードスニペットです。

<事前> <コード> block in method_missing' C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:422:in2

結果はこのエラーです:

<事前> <コード> block in method_missing' C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:422:in3

VOLクラスのジェネレータにマッピングされています。

<事前> <コード> block in method_missing' C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.3/lib/acti ve_record/migration.rb:422:in4

私は本当に保存が読み取り専用トランザクションとしてどのように考えることができるかを理解していません。私は私のドメインクラスの@Transactional設定をめちゃくちゃにして、最初にreadonlyをfalseに入れてから@transactionalを削除しましたが、それは物事を変えませんでした。データベースシーケンスを使用するための代替案を検討する必要があります。あなたはどう思いますか?

アップデート 上記のコードが存在し、それがうまくいったコントローラからREADONLY = TRUEを削除しました。しかし...それを取り除くことの副作用は何ですか?

英語

Having trouble creating an object "from scratch" (in code instead of from forms) in Grails. The following is the code snippet from a method in a controller (Assessment).

def newVol = new Vol(               volType:type,                 app: assessmentInstance.app,                 assessment:assessmentInstance,                 dateFound: assessmentInstance.assDate,                 urlParam: url,                 volName: "TEST",                 volNote: "TEST"          )          newVol.save(validate:false,flush:true, failOnError:true) 

result is this error:

Class org.postgresql.util.PSQLException Message ERROR: cannot execute nextval() in a read-only transaction 

the id is mapped to a generator in the Vol class:

   static mapping = {     id column:'vol_id'      id generator: 'sequence',params:[sequence:'scan_sequence'] } 

I really don't understand how a save could be thought of as a read-only transaction. I tried messing around with the @transactional settings on my domain class, first putting readOnly to false and then removing the @transactional but it did not change things. It looks like I should look for alternatives to using a database sequence. What do you think?

UPDATE removed the readonly=true from the controller where the above code lives and that worked. But... what are the side effects of removing that?

</div
  

回答リスト

2
 
vote
vote
ベストアンサー
 

問題は、読み取り専用トランザクションで書き込み操作をしようとしているのですか?書き込み操作をしている場合は、<コード> readOnly=true を削除することは絶対に正しいことです。

読み取りを実行している場合は、ではありません。その理由は、 readOnly=true が読み取り専用トランザクションのダーティチェックを実行する必要がないため、パフォーマンスを向上させるためのものです。

 

The question is why are you trying to do a write operation in a read-only transaction? If you are doing a write operation then removing readOnly=true is absolutely the right thing to do.

If you are only performing a read then you should not remove it. The reason is that having readOnly=true improves performance as Hibernate does not need to perform dirty checking for a read-only transaction.

</div
 
 
 
 

関連する質問

2  Rails / Grailsアプリケーションにはどのようなモデリングテクニック/ツール/ダイアグラムをお勧めしますか。 [閉まっている]  ( What modeling technique tool diagram would you recommend for a rails grails appl ) 
この質問はスタックオーバーフローガイドラインを満たしていません。現在答えを受け付けていません。 この質問を改善したいですか? ...

0  GrailsのCSVからデータをロードする  ( Load data from csv in grails ) 
私は「禁止されていたユーザー名」のリストを持つCSVファイルを持っています。基本的に私はユーザー登録時にこのリストをチェックしたいです。このリストをデータベースにロードしたいが、各名前とブートストラップのドメインオブジェクトを作成しないでください。しかし、私は...

2  セキュリティ問題と検索エンジンの最適化を獲得しました  ( Grails security problem and search engine optimization ) 
現在のGSPページに依存するコントロールロジックを作成しようとしています。アクションを呼び出すには、現在のGSPページを識別するために使用できるタグまたはセッションメソッドがあります。 シングアップとログインを除くすべてのGSPへのアクセスを制限したいので、ユ...

9  Groovy + OsgiまたはGrails?  ( Groovy osgi or grails ) 
私はOSGIを学んでいて、最近Groovyについても少しだけでなく、両方にとって非常に新しいです。私はGroovyがGrailsフレームワークの一部であり、その杯は急速な発展に適していることを知っています。 OSGiの最も望ましい機能の1つはクラスローダー管理...

1  MD5と塩  ( Md5 and salt ) 
Grails 1.1以降は「EncodeasMD5」が文字列に入手可能です - 関数の塩を提供する方法はありますか? 典型的な使用法: <事前> <コード> ${myString.encodeAsMD5()} 別の選択肢は、Apache Digestut...

1  敷地内に獲得した  ( Grails on premises ) 
私たちは、私たちの公共のサーバーでホストされることを目的としたGrailsを使用してアプリケーションを開発しました、そして今、私たちは彼らの敷地内にそれをインストールしたいいくつかの顧客を持っています。 私たちのアプリケーションをライセンスを取得し、時間内に限...

0  オブジェクトがドメインオブジェクトのコレクション内にあるかどうかを確認する方法  ( How to check if object is within collection on domain object ) 
私のアプリケーションへの要求で、私はしばしばオブジェクトのIDを取得します。これは関連付けられるべきです。しかし、私は彼らがあるかどうかを確認するためのチェックを実行する必要があります。 シナリオの例: クラスAとBが関連付けられています: <事前> <コード...

5  FindByまたはListOrderByメソッドで一時的なプロパティを使用する  ( Using transient property in findby or listorderby methods ) 
一時的なプロパティfooを使用してドメインクラスを持っています。このプロパティでlistOrderByfooを使用したいが、エラーが表示されます。エラーは「プロパティを解決できませんでした:foo」。 ListOrderByProperty()またはfindB...

6  GrailsプロジェクトのJavadocを作成する方法  ( How to create javadoc of a grails project ) 
Grailsプロジェクト用のJavadocを作成する方法がありますか? (それは理にかなっていますか?) ...

3  gorm / hibernateを使った熱心なロードクエリ  ( Eager loading queries with gorm hibernate ) 
マイGrailsアプリには、次のドメインオブジェクトがあります。 <事前> <コード> class ProductType { String name static hasMany = [attributes: Attribute] } cl...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有