byte[]
Grails 2.2.3 を使用してとして定義された列に jpeg ファイル (3 ~ 8 KB) をロードしようとすると、キャプション付きの例外が発生します。エラーは次のとおりです。
org.h2.jdbc.JdbcSQLException: Value too long for column "PHOTO BINARY(255) ... SQL statement: update profile set col1=?, ..., photo=?, ..., coln=? where id=?
これは Grails 1.3.7 では org.hsqldb.jdbcDriver を使用して動作していましたが、現在は常に失敗しています。変数を別の方法で定義する必要がありますか? もしそうなら、何ですか?
すべてのbyte[] photo
コードを に変更しようとしましbyte[] photo = new byte[10000]
たが、まったく役に立ちませんでした。
与えられた回答に応じて、元の質問に追加します。初めまして、皆様ありがとうございます。これは、DataSource.groovy 内の関連するコードです。
environment {
developement {
dataSource {
dbCreate = "update"
url = "jdbc:h2:file:devDb:MVCC=TRUE;LOCK_TIMEOUT=10000
}
}
}
次のファイルとコードは、ImageController.groovy からイメージが読み込まれていると思われる場所です。
class PhotoUploadCommand {
byte[] photo
//def photo // tried, makes no diff here
String userId
static constraints = { photo(maxSize: 1024 * 1024) } // added as per suggestions
}
class ImageController {
def imageService
def upload = { PhotoUploadCommand puc ->
def user = User.findByUserId(puc.userId)
user.profile.photo = puc.photo
//user.profile.photo = request.getFile('photo') // also tried - N/G
redirect(controller: 'user', action: 'profile', id: puc.userId)
}
class ImageController {
クロージングで始まりクロージングで終わるすべてのコードをコメントアウトしても、}
違いはありません。したがって、私は間違っているに違いありません。これは、画像が読み込まれている場所ではありません。ただし、このアプリケーション全体には、写真の読み込みに直接関連する他のコードはありません。したがって、これは Profile.groovy クラスからスキャフォールディングする必要があります。
class Profile {
byte[] photo
//def photo // tried, but then the element is removed from the template
String fullName
String bio
String homepage
String email
String timezone
String country
String jabberAddress
String skin
static mapping = {
photo column: 'photo', sqlType: 'VARBINARY(10000)', nullable: 'true'
//photo(type: 'image') // also tried
}
static constraints = {
fullName(nullable: true)
// ...
//photo(nullable: true, maxSize: 1024 * 1024) // also tried
photo(nullable: true)
// ...
}
これらすべての同じ列を含む UserContoller.class もあり、さらに:
String userId
String password
String passwordRepeat
...そしてそこに変更byte[] photo
してdef photo
も何もしません-マッピングを追加することもありません。Java プログラマーにとって非常に紛らわしいです。