当我尝试向db"INSERT INTO invite_users VALUES('id',user_name')添加新行时"
我收到这个错误:
General error: "java.lang.IllegalStateException: Chunk 2089 no longer exists [1.4.181/9]"
Run Code Online (Sandbox Code Playgroud)
可能这是db的一些问题,因为当我试图将相同的行添加到新的db时 - 错误消失了.
2014年11月20日更新
好消息!我联系了H2 db的开发人员并发现他们将在下一个版本中修复该bug. https://groups.google.com/forum/#!topic/h2-database/i_GHXExjotc
2014年12月6日更新
一个简单的解决方法是通过将"; mv_store = false"附加到数据库URL来禁用MVStore.
但是,如果你需要旧的数据库,这个技巧将不起作用.它创建了新的数据库,扩展名为.h2.db而不是.mv.db
要解决此问题,您需要创建旧数据库".mv.db"的SQL脚本(使用"恢复"工具),然后使用"runscript ..."运行此脚本.
我试图从h2 db获取值,但总是得到这个错误
org.h2.jdbc.JdbcSQLException: No data is available [2000-171]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.jdbc.JdbcResultSet.checkOnValidRow(JdbcResultSet.java:2956)
at org.h2.jdbc.JdbcResultSet.get(JdbcResultSet.java:2962)
at org.h2.jdbc.JdbcResultSet.getInt(JdbcResultSet.java:306)
Run Code Online (Sandbox Code Playgroud)
我用Google搜索了一个答案
一定要调用rs.next(); 在使用任何getter方法之前.
但我确实叫rs.next()......
这是我的代码:
public User getUser(int userId) throws SQLException {
User u = new User(userId);
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM invited_users WHERE user_id=" + userId);
rs.next();
u.setName(rs.getString("user_name"));
} catch (SQLException except) {
JOptionPane.showMessageDialog(null, "Unable to load user! " + except);
}
return u;
}
Run Code Online (Sandbox Code Playgroud) 我有一个 python 应用程序,可以使用 URL 列表并生成 bash 脚本作为输出。
如何清理 URL,以便恶意用户无法注入将在我的基础设施上执行的 bash 命令。
例如:
http://www.circl.lu/a.php?rm -Rf /etc
Run Code Online (Sandbox Code Playgroud)