Я пытаюсь использовать HyperSQL в моей Java-приложения следующим образом:HyperSQL - неожиданный маркер ON
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Main {
static Connection conn;
static Statement stat;
public static void main(String[] args) {
try {
Class.forName("org.hsqldb.jdbc.JDBCDriver");
} catch (Exception ex) {
System.out.println("An error occurred while loading HSQLDB JDBC driver: " + ex.getMessage());
return;
}
try {
conn = DriverManager.getConnection(
"jdbc:hsqldb:file:helper_db;sql.syntax_mys=true");
stat = conn.createStatement();
stat.executeUpdate(
"CREATE TABLE IF NOT EXISTS some_table " +
"(" +
"foo TEXT PRIMARY KEY, " +
"bar TEXT" +
");"
);
stat.executeUpdate(
"INSERT INTO some_table VALUES" +
"('foo', 'bar') " +
"ON DUPLICATE KEY UPDATE some_table = VALUES" +
"('foo', 'bar');"
);
} catch (Exception ex) {
System.out.println("An error occurred: " + ex.getMessage());
return;
}
}
}
Этот код дает мне следующий вывод:
An error occurred: unexpected token: ON
Что я делаю неправильно? Как решить эту проблему?
@a_horse_with_no_name Но я использую синтаксис MySQL (sql.syntax_mys = TRUE), который поддерживает дублирование. Или это не полностью реализованный синтаксис MySQL? И что мне нужно использовать? Мне нужно только сделать что-то вроде REPLACE INTO. – FrozenHeart
@ david99world Да. – FrozenHeart
Почему, по-вашему, HSQLDB поддерживает синтаксис MySQL? Это другая СУБД и, следовательно, имеет другой синтаксис (который * * документирован в руководстве) –