[Seasar-user:20920] Re: S2JDBCにて、Mysqlのboolean型のカラムに文字列を挿入しようとする。

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 7月 28日 (木) 18:45:21 JST


小林 (koichik) です.

> 一応Eclipseでデバッグしながら jdbcManagerの中身も覗いてみたのですが、
> dialect= MysqlDialect と設定されています。

むむむ。。。
それなら PreparedStatement#setBoolean() が使われて、このような現象には
ならないと思うのですが。うーみゅ。

org.seasar.extension.jdbc.types.BooleanType#bindValue(PreparedStatement, int, Object)

にブレークポイントを付けて、呼ばれているかどうか確認して頂けますか?


Date: Thu, 28 Jul 2011 17:58:44 +0900
From: Masao Suda <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20917] Re: S2JDBCにて、Mysqlのboolean型のカラムに文字列を挿入しようとする。

> 小林様、吉田様
> 須田です。お世話になっております。
> 
> 一応Eclipseでデバッグしながら jdbcManagerの中身も覗いてみたのですが、
> dialect= MysqlDialect と設定されています。
> 
> > 小林 (koichik) です.
> >
> > s2jdbc.dicon で MySQL の dialect を設定しているか確認してください。
> > boolean 型をサポートしてない Oracle あたりになってないでしょうか?
> >
> > http://s2container.seasar.org/2.4/ja/s2jdbc_setup.html#ダイアレクト
> >
> > Date: Thu, 28 Jul 2011 17:01:46 +0900
> > From: Masao Suda <[E-MAIL ADDRESS DELETED]>
> > Subject: [Seasar-user:20912] S2JDBCにて、Mysqlのboolean型のカラムに文字列を挿入しようとする。
> >
> >> 須田と申します。
> >> お世話になっております。
> >>
> >> S2JDBCを利用しているのですが、以下のエラーが発生してしまいます。
> >> ログ出力されているSQLをMySQLで実行すると、
> >> ERROR 1366 (HY000): Incorrect integer value: 'true' for column 'SYSTEM_FLG' at row 1
> >> となるため、boolean型に文字列を設定しようとしているのが原因と思われるのですが、
> >> 解決するにはどのような設定をすればよいでしょうか?
> >>
> >> --- ログ ---
> >> DEBUG 2011-07-28 16:44:45,671 ["http-bio-8080"-exec-7] update user set ACCOUNT = 'admin', NAME = 'システム管理者', PASSWORD = 'password', MAIL_ADDRESS = '', SYSTEM_FLG = 'true', DEPARTMENT_ID = 0, CREATE_TIMESTAMP = '2011-07-08 00:03:23', UPDATE_TIMESTAMP = '2011-07-28 16:44:45.671000000', DELETE_TIMESTAMP = null, VERSION = VERSION + 1 where ID = 1 and VERSION = 0
> >> DEBUG 2011-07-28 16:44:45,671 ["http-bio-8080"-exec-7] END jp.co.interaction_i.service.UserService#update([E-MAIL ADDRESS DELETED]) Throwable:org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[update user set ACCOUNT = ?, NAME = ?, PASSWORD = ?, MAIL_ADDRESS = ?, SYSTEM_FLG = ?, DEPARTMENT_ID = ?, CREATE_TIMESTAMP = ?, UPDATE_TIMESTAMP = ?, DELETE_TIMESTAMP = ?, VERSION = VERSION + 1 where ID = ? and VERSION = ?], Message=[[ESSR0072]SQLで例外(SQL=[update user set ACCOUNT = ?, NAME = ?, PASSWORD = ?, MAIL_ADDRESS = ?, SYSTEM_FLG = ?, DEPARTMENT_ID = ?, CREATE_TIMESTAMP = ?, UPDATE_TIMESTAMP = ?, DELETE_TIMESTAMP = ?, VERSION = VERSION + 1 where ID = ? and VERSION = ?], Message=[1452], ErrorCode=23000, SQLState={3})が発生しました : [SQLで例外(Message=[Cannot add or update a child row: a foreign key constraint fails (`sgpr001`.`user`, CONSTRAINT `user_FK1` FOREIGN KEY (`DEPARTMENT_ID`) REFERENCES `department` (`!
>  ID`!
> >>  ))], ErrorCode=1452, SQLState=23000)が発生しました。], [Cannot add or update a child row: a foreign key constraint fails (`sgpr001`.`user`, CONSTRAINT `user_FK1` FOREIGN KEY (`DEPARTMENT_ID`) REFERENCES `department` (`ID`))], ErrorCode=1452, SQLState=23000)が発生しました
> >> DEBUG 2011-07-28 16:44:45,718 ["http-bio-8080"-exec-7] トランザクションをロールバックしました。tx=[FormatId=4360, GlobalId=1311838291468/17, BranchId=]
> >>
> >> --- DDL ---
> >> create table user (
> >>     ID bigint not null auto_increment,
> >>     ACCOUNT varchar(20) not null,
> >>     NAME varchar(50),
> >>     PASSWORD varchar(20) not null,
> >>     MAIL_ADDRESS varchar(255),
> >>     SYSTEM_FLG boolean default false,
> >>     DEPARTMENT_ID bigint,
> >>     CREATE_TIMESTAMP datetime,
> >>     UPDATE_TIMESTAMP datetime,
> >>     DELETE_TIMESTAMP datetime,
> >>     VERSION bigint,
> >>     constraint user_PK primary key(ID)
> >> );
> >>
> >> --- エンティティ(一部) ---
> >> 	/**
> >> 	 * システムフラグ
> >> 	 */
> >> 	@Column(columnDefinition="default false")
> >> 	public boolean systemFlg;
> >>
> >> --- jdbc.dicon ---
> >> 	<component name="xaDataSource"
> >> 		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
> >> 		<property name="driverClassName">
> >> 			"com.mysql.jdbc.Driver"
> >> 		</property>
> >> 		<property name="URL">
> >> 			"jdbc:mysql://localhost:3306/proj001"
> >> 		</property>
> >> 		<property name="user">"projuser"</property>
> >> 		<property name="password">"projpass"</property>
> >> 	</component>
> >>
> >>
> >> --- 環境 ---
> >> jdk:1.6.0_24
> >> Seasar:2.4.44
> >> SaStruts:1.0.4-sp8
> >> S2jdbc-gen:2.4.44
> >> Eclipse:Indigo(build id:20110615-0604)
> >> Dolteng:0.41.0
> >> Apatche-tomcat:7.0.16
> >> MySQL:essential-5.1.57
> >>
> >>
> >>
> > --
> > {
> >   name: "Koichi Kobayashi",
> >   mail: "[E-MAIL ADDRESS DELETED]",
> >   blog: "http://d.hatena.ne.jp/koichik/",
> >   twitter: "@koichik"
> >  }
> >
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> >
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user

--
{
  name: "Koichi Kobayashi",
  mail: "[E-MAIL ADDRESS DELETED]",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
 }



Seasar-user メーリングリストの案内