简体   繁体   中英

Preventing from Multiple primary key error

This is my code for executing in my java program:

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();
    }
}

I cat use IF NOT EXIST for creating databasesand tables to prevent creating duplicate database and tables and corresponding errors.

But i don't know how prevent Multiple primary key error , because program may call createBooksTablesAndSetPK() multiple times.

Error:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Multiple primary key defined

The column Book_id is not existing in your case. You are creating a table with ID as the column and then updating the table with a PRIMARY KEY constraint on a column that is not existing.

Create table IF NOT EXISTS books (ID int,Name varchar(20),ISBN varchar(10),Date date )

ALTER TABLE BOOKS ADD PRIMARY KEY(BOOK_id)

Try running these statements on a MySQL command prompt (or MySql Workbench) and the see the error.

You need change the alter table command like this.

ALTER TABLE BOOKS ADD BOOK_id VARCHAR( 255 ), ADD PRIMARY KEY(BOOK_id);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM