我尝试通过运行testdb.sql文件在Java中初始化数据库
第一个
下面是testdb.sql
CREATE DATABASE IF NOT EXISTS testDB;
USE testDB;
CREATE TABLE USERS(
userType VARCHAR(50) not null,
userName VARCHAR(100) not null,
password VARCHAR(100) not null,
primary key(userName)
);
我在MySQL工作台中运行了完全相同的SQL,它工作正常,但为什么当我尝试在java中运行时,它失败了,并警告SQL语法错误?以下是错误消息:
异常错误代码:SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第3行的“CREATE TABLE USERS(userType VARCHAR(50)not null,userName VARCHAR(100)”附近使用的正确语法
我希望用Java代码在数据库中创建表
2条答案
按热度按时间4zcjmb1e1#
JDBC API是针对每条语句的,而您的代码一次执行两条语句。通常情况下,这是行不通的。对于MySQL Connector/J,您可以通过将连接属性
allowMultiQueries
设置为true来将其配置为接受多条语句。但是,在使用JDBC驱动程序时,您不应该使用
USE
之类的语句,它可能会使驱动程序处于不一致的状态。您应该连接到正确的数据库,或者使用Connection.setCatalog
方法。如MySQL Connector/J documentation:请始终使用
Connection.setCatalog()
方法指定JDBC应用程序中所需的数据库,而不要使用USE
数据库语句。如果您希望使用更高级的方法来执行模式更改,请查看Flyway或Liquibase等模式演化工具。
bvjveswy2#
您有多行SQL脚本,而不是单行语句。
您可以使用脚本运行器来运行这些行