不能将MySql用于Spring Greenhouse项目?

时间:2013-01-07 11:10:48

标签: java spring

我刚刚查看了Spring Greenhouse项目,作为学习Spring Security的第一步。 该项目工作正常,但我想知道以下情况:

有两种配置:标准配置和嵌入式配置。 javadoc说嵌入式是默认的。我不知道如何让它在标准模式下运行。有没有人以前试过这个?

其次在嵌入式模式下,我使用以下代码稍微修改了代码,以便使用MySql运行它,但令我惊讶的是应用程序根本没有启动。它会引发以下错误:

throw new RuntimeException("Unable to determine database version", e);

@Bean(destroyMethod="shutdown")
public DataSource dataSource() {
    // EmbeddedDatabaseFactory factory = new EmbeddedDatabaseFactory();
    // factory.setDatabaseName("greenhouse");
    // factory.setDatabaseType(EmbeddedDatabaseType.);
    DriverManagerDataSource mysqldataSource = new DriverManagerDataSource();
    mysqldataSource.setDriverClassName("com.mysql.jdbc.Driver");
    mysqldataSource.setUrl("jdbc:mysql://localhost/greenhouse?useConfigs=maxPerformance&characterEncoding=utf8");
    mysqldataSource.setUsername("root");
    mysqldataSource.setPassword("mysql");
    return populateDatabase(mysqldataSource);       
}

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

根据您获得的例外情况判断,您感兴趣的文件是GenericDatabaseUpgrader.java

超过一半的代码引用DatabaseVersion,这是一个在缺席的情况下创建的表。 因为我怀疑你已经拥有它并且通过异常类型(SQLException)来判断,所以我倾向于说它没有创建/插入/检索引用的表。

你可以查看你是否有桌子并从那里开始。

另外,根据您尝试注入的代码判断,我也会将connection = dataSource.getConnection()视为可能的罪魁祸首。

P.S。关于标准/嵌入式,您可以在VM参数或maven设置之间切换。请检查the official forums and specifically this topic for info

答案 1 :(得分:0)

我自己想通了。 web.xml中有一个标签,我从那里更改为嵌入式标准。 问题是在sql查询中创建数据库版本表不是mysl投诉。还有其他查询也不是mysql投诉。我更改了sql查询,现在eveything像预期的那样工作。我接下来要做的是使用某种类型的通用数据库查询生成器,这样我就不必更改查询,如果将来我改变主意使用post gre sql代替我的sql。 感谢您的所有帮助和支持。