mysql - SQL commands not compliable by H2 -
the following sql commands mysql. not sql expert , not know h2. spring app throws exception because user_roles table can not created. has problem fk_username_idx
:
drop table if exists users; drop table if exists user_roles; create table users ( userid varchar(5) not null, username varchar(45) not null , password varchar(60) not null , enabled tinyint not null default 1 , primary key (userid)); create table user_roles ( user_role_id int(11) not null auto_increment, userid varchar(5) not null, role varchar(45) not null, primary key (user_role_id), unique key uni_username_role (role,userid), key fk_username_idx (userid), constraint fk_username foreign key (userid) references users (userid));
error log:
caused by: org.h2.jdbc.jdbcsqlexception: unbekannter datentyp: "fk_username_idx" unknown data type: "fk_username_idx"; sql statement: create table user_roles ( user_role_id int(11) not null auto_increment, userid varchar(5) not null, role varchar(45) not null, primary key (user_role_id), unique key uni_username_role (role,userid), key fk_username_idx (userid), constraint fk_username foreign key (userid) references users (userid)) [50004-191] @ org.h2.message.dbexception.getjdbcsqlexception(dbexception.java:345) @ org.h2.message.dbexception.get(dbexception.java:179) @ org.h2.message.dbexception.get(dbexception.java:155) @ org.h2.command.parser.parsecolumnwithtype(parser.java:4059) @ org.h2.command.parser.parsecolumnfortable(parser.java:3922) @ org.h2.command.parser.parsecreatetable(parser.java:5864) @ org.h2.command.parser.parsecreate(parser.java:4217) @ org.h2.command.parser.parseprepared(parser.java:360) @ org.h2.command.parser.parse(parser.java:315) @ org.h2.command.parser.parse(parser.java:287) @ org.h2.command.parser.preparecommand(parser.java:252) @ org.h2.engine.session.preparelocal(session.java:560) @ org.h2.engine.session.preparecommand(session.java:501) @ org.h2.jdbc.jdbcconnection.preparecommand(jdbcconnection.java:1188) @ org.h2.jdbc.jdbcstatement.executeinternal(jdbcstatement.java:170) @ org.h2.jdbc.jdbcstatement.execute(jdbcstatement.java:158) @ org.springframework.jdbc.datasource.init.scriptutils.executesqlscript(scriptutils.java:472) ... 47 more
are sure h2 runs in mysql compatiblity mode? check first. looking @ connect string. example this:
final simpledriverdatasource ds = new simpledriverdatasource(); ds.setdriverclass(driver.class); ds.seturl("jdbc:h2:mem:test;mode=mysql;db_close_delay=-1;db_close_on_exit=false"); ds.setusername("sa"); ds.setpassword("");
foreign key fk_username_idx (userid),
not suppported h2. removeforeign
here.
then work
Comments
Post a Comment