我刚刚检查了Spring温室项目,作为学习Spring安全性的第一步。这个项目运行得很好,但我想知道以下情况:
有两种配置:标准配置和嵌入式配置。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);
}有没有人能帮我这个忙?
发布于 2013-01-21 18:16:22
我自己想出来的。web.xml中有一个标签,我把它从嵌入式改为了标准。问题出在创建数据库版本表的sql查询中,这与mysl无关。还有其他问题也不是mysql的抱怨。我更改了sql查询,现在一切都像预期的那样工作。我的下一件事是使用某种通用的数据库查询生成器,这样如果将来我改变主意,使用post gre sql代替我的sql,我就不必更改查询。感谢您的帮助和支持。
发布于 2013-01-17 19:26:33
从您得到的异常判断,您感兴趣的文件是GenericDatabaseUpgrader.java
其中超过一半的代码引用了DatabaseVersion,这是一个在不存在时创建的表。由于我怀疑您已经有了它,并且从异常类型(SQLException)判断,我倾向于认为它无法创建/插入/检索被引用的表。
您可以查看是否有桌子,然后从那里出发。
此外,从您试图注入的代码来判断,我也认为connection = dataSource.getConnection()可能是罪魁祸首。
附注:关于标准/嵌入式,似乎您可以使用VM参数或maven设置在两者之间切换。请查看the official forums and specifically this topic for info
https://stackoverflow.com/questions/14194697
复制相似问题