0

我刚刚签出了 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);       
}

有人可以帮我吗?

4

2 回答 2

0

从你得到的异常来看,你感兴趣的文件是GenericDatabaseUpgrader.java

超过一半的代码指的DatabaseVersion是如果不存在则创建的表。由于我怀疑您是否已经拥有它并且根据异常类型 ( SQLException) 判断,我倾向于说它无法创建/插入/检索引用的表。

你可以检查你是否有桌子,然后从那里去。

此外,从您尝试注入的代码来看,我也将connection = dataSource.getConnection()其视为可能的罪魁祸首。

PS关于标准/嵌入式,您似乎可以通过VM参数或maven设置在两者之间切换。请查看官方论坛,特别是此主题以获取信息

于 2013-01-17T11:26:33.317 回答
0

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

于 2013-01-21T10:16:22.410 回答