不可第二次运行
Topic source如果表已经创建
在init()的第一行再加上个
jdbcTemplate.update("DROP TABLE IF EXISTS users");
就能不手动清除数据库表正常运行了(不然貌似报错后压根执行不到@PreDestroy方法)
我是直接在eclipse里下载老师的实例代码没做任何修改运行的,应该是使用的HSQLDB。
我又去复现了一遍,运行会产生四个新文件:
testdb.log
testdb.properties
testdb.script
testdb.tmp
删掉这四个新文件也可正常运行
或者在UserService的register方法最开始添加
// 如果用户已存在
User user = getUserByEmail(email);
if (user != null) {
System.err.println("user: " + email+ " already exists.");
return user;
}
感谢各位大佬,成功解决。
PreparedStatementCallback; integrity constraint violation: unique constraint or index violation ; SYS_CT_10097 table: USERS
- 1
SNH48-刘慈欣
我发现这一章的代码实例里都会因为“用户重复”的原因不可重复正常运行,会报错。
在
DatabaseInitializer
里加入清理方法即可解决