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 

  1. 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(""); 
  2. foreign key fk_username_idx (userid), not suppported h2. remove foreign here.

then work


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -