有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JDBC无法执行为测试创建表的ExecuteStatementException

我正在使用http://wakandan.github.io/2015/09/21/setup-dropwizard-testing-for-dao.html指南测试dao

我将我的DataSourceFactory设置为

DataSourceFactory dataSourceFactory = new DataSourceFactory();
dataSourceFactory.setDriverClass( "org.h2.Driver" );
dataSourceFactory.setUrl( "jdbc:h2:mem:test-%s;MODE=MySQL;TRACE_LEVEL_FILE=3;INIT=CREATE SCHEMA IF NOT EXISTS MY_SCHEMA" );
dataSourceFactory.setUser( "sa" );
dataSourceFactory.setPassword( "" );
return dataSourceFactory;

我的sql文件看起来像

USE my_schema;

CREATE TABLE users (
    AutoId INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    ...
) ENGINE = InnoDB, DEFAULT CHARSET = utf8;

我在使用mysql -uroot my_schema < 0001.sql等之前使用过这些sql,它们工作得很好

使用

使用我的模式

handle.begin();
    handle.createScript(FixtureHelpers.fixture("schema/0001.sql"))
        .execute();
    //and so on
    handle.commit()

我明白了

org.skife.jdbi.v2.exceptions.UnableToExecuteStatementException: org.h2.jdbc.JdbcBatchUpdateException: Syntax error in SQL statement "CREATE TABLE MY_SCHEMA.USERS ( AUTOID INT UNSIGNED PRIMARY KEY AUTO_INCREMENT ... ) ENGINE = INNODB, DEFAULT CHARSET = UTF8 "; expected "USING, ,, )";

我做错了什么


共 (0) 个答案