这是我在java程序中执行的代码:
public static void createBooksTablesAndSetPK() {
String selectDB = "Use lib8";
String createBooksTable = "Create table IF NOT EXISTS books (ID int,Name varchar(20),ISBN varchar(10),Date date )";
String bookTablePK = "ALTER TABLE BOOKS ADD PRIMARY KEY(id)";
Statement st = null;
try (
Connection con = DriverManager.getConnection(dbUrl, "root", "2323");) {
st = con.createStatement();
st.execute(selectDB);
st.execute(createBooksTable);
st.execute(bookTablePK);
} catch (SQLException sqle) {
sqle.printStackTrace();
}
}
我使用IF NOT EXIST
来创建数据库和表,以防止创建重复的数据库和表以及相应的错误。
但我不知道如何阻止Multiple primary key error
,因为程序可能会多次调用createBooksTablesAndSetPK()
。
错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Multiple primary key defined
答案 0 :(得分:0)
您的案例中不存在列Book_id
。您正在创建一个以ID作为列的表,然后在不存在的列上使用PRIMARY KEY约束更新表。
Create table IF NOT EXISTS books (ID int,Name varchar(20),ISBN varchar(10),Date date )
ALTER TABLE BOOKS ADD PRIMARY KEY(BOOK_id)
尝试在MySQL命令提示符(或MySql Workbench)上运行这些语句,然后查看错误。
您需要像这样更改alter table命令。
ALTER TABLE BOOKS ADD BOOK_id VARCHAR( 255 ), ADD PRIMARY KEY(BOOK_id);