1

Grailsアプリケーションを作成しましたが、完成に向けて順調に進んでおり、Cloud Foundry、Heroku、App Engineなどのさまざまなクラウドプロバイダーでテストしていました。最終的には、Jelasticを使用しました。デプロイのために「war」ファイルをアップロードするだけでよいので、ローカルプラグインの使用を完全にサポートしているように見えました。

今日まで、これに問題はなく、すべて問題ありませんでしたが、いくつかの変更を加え、アプリケーションにいくつかの関係を追加して、BootStrapを使用してデータを入力しました。このブートストラップは以前は機能していましたが、現在は停止しています。以下に、私のブートストラップの例を示します。

def init = { servletContext ->

def adminRole = new SecRole(authority: 'ADMIN').save(flush: true) 
def userRole = new SecRole(authority: 'USER').save(flush: true)

def Admin = new SecUser(username: 'admin', email:'admin@admin.com', enabled: true, password: 'password')

def SuperUser = new Areas(name:"SuperUser")
.addToUsers(Admin)
.save(flush:true)

SecUserSecRole.create Admin, adminRole, true

assert SecUser.count() == 1 
assert SecRole.count() == 2 
assert SecUserSecRole.count() == 1 
    } 

このデータを使用してアプリケーションをローカルで実行すると、BootStrapは正常に機能しますが、Jelasticで実行すると、次のエラーメッセージが表示されます。

SEVERE: Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener
org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL

これは、エラーが発生した場所の部分的なスタックトレースにすぎませんが、なぜ発生したのか途方に暮れています。誰かが助けてくれますか?

ありがとう

編集.....

同じエラーメッセージが表示された状態でこのブートストラップデータも試しました:S

def init = { servletContext ->

def adminRole = new SecRole(authority: 'ADMIN').save(flush: true) 

def SuperAdmin = new Areas(name: 'Super Admin')

SuperAdmin.save(flush: true)

def area = Areas.findByName('SuperAdmin')

def SuperAdmin = new SecUser(username: 'admin', email:'test@test.com', area: area, enabled: true, password: 'admin')

SuperAdmin.save()

SecUserSecRole.create SuperAdmin, adminRole, true

assert SecUser.count() == 1 
assert SecRole.count() == 2 
assert SecUserSecRole.count() == 1 
    } 

私が受け取っているエラーメッセージは以下のとおりです。

SEVERE: Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener
org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select this_.id as id3_0_, this_.version as version3_0_, this_.account_expired as account3_3_0_, this_.account_locked as account4_3_0_, this_.area_id as area5_3_0_, this_.email as email3_0_, this_.enabled as enabled3_0_, this_."password" as password8_3_0_, this_.password_expired as password9_3_0_, this_.username as username3_0_ from sec_user this_ where this_.username=?]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query

BootStrapデータを削除しましたが、アプリは正常に起動します。クラウド上ではなくローカルでブートストラップを使用して正常に実行されるため、誰かがこれに光を当てることができますか?前もって感謝します

4

2 に答える 2

1

あなたが提供した情報はあなたを助けるのに十分ではないと思います。

これをデバッグするには、アプリケーションが起動するようにブートストラップコードを削除することをお勧めします。

次に、コンソールプラグイン(http://grails.org/plugin/console)をインストールします。これにより、コンソールでブートストラップコードをテストできます。多分それはあなたが問題を突き止めるのを助けるでしょう。

お役に立てば幸い

于 2012-11-14T20:56:57.437 に答える
0

Jelasticクラウドと同じ環境トポロジをローカルで使用していますか?ジェラスティック環境の名前を教えてください。また、JelasticインストールでDB接続ライブラリを見逃さないようにし、バージョンがローカルで使用するものと同じであることを確認してください。

于 2012-11-15T09:22:03.497 に答える