java - 无法使用 java 驱动程序发出简单的 SQL 请求,但在 mysql 控制台中工作正常
问题描述
所以我想对我的 MariaDB 服务器做一个简单的 SQL 查询来删除数据库(我知道这可能不是最好的方法)。这是执行此操作的一段代码:
public static void cleanDatabase() {
try {
Connection con = DriverManager.getConnection("myurl", "username", "password"); // replaced by real values
Statement stmt = con.createStatement();
stmt.executeUpdate("DROP DATABASE statuer_test; CREATE SCHEMA IF NOT EXISTS statuer_test DEFAULT CHARACTER SET utf8;");
con.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println("cleanDatabse(): error");
}
}
这是我调用 cleanDatabase() 方法时得到的结果:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CREATE SCHEMA IF NOT EXISTS statuer_test DEFAULT CHARACTER SET utf8' at line 1
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
(more lines...)
但是,当我使用 mysql cli 客户端时,这完全有效:
MariaDB [(none)]> CREATE SCHEMA IF NOT EXISTS statuer_test DEFAULT CHARACTER SET utf8;
Query OK, 0 rows affected, 1 warning (0.000 sec)
那么我在这里缺少什么?
解决方案
Seem to work with that code, so resolved:
stmt.executeUpdate("DROP DATABASE statuer_test");
stmt.executeUpdate("CREATE SCHEMA IF NOT EXISTS statuer_test DEFAULT CHARACTER SET utf8");
推荐阅读
- java - 我想在 Java 中反转一个字符串并删除和重复
- dart - 如何将 TextInputType 设置为韩语?
- php - 如何在laravel中使用mpdf在页脚中添加页码
- ajax - 同步和异步 Ajax 请求之间的区别
- regex - 每个语句的正则表达式问题
- cordova - 插件添加 v/s npm install 期间的版本号?
- c++ - 基本案例功能是强制性的还是可以自动合成?
- javascript - “退出”是一种普遍支持的停止 JavaScript 执行的方式吗?
- swift - 如何根据周使用 FSCalendar 隐藏第二天
- python-3.x - sklearn.clusters.KMeans.lables_ 在 Python 3 中如何工作?