Как проверить существует ли индекс?

301
14 января 2018, 04:40

Запускается некое приложение. Конектится к базе. Создаются таблицы(если не созданы ранее) и доходит очередь до создание индекса, но он мог уже быть создан ранее и из-за этого я получу исключение Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Duplicate key name 'tablename_index' (Java). Как наиболее просто и правильно проверить, существует ли индекс и создать его, если он не был ранее создан.

Посоветовали тему(я её ранее читал до создания вопроса здесь).

Там есть следующие:

You could just query for the existence of the index by name. For example, before you run

CREATE INDEX index_name ON mytable(column);

You need to run

SELECT COUNT(1) IndexIsThere FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_schema=DATABASE() AND table_name='mytable' AND index_name='index_name';

Как объединить это в 1 запрос с обычным условием? Ибо создание таблиц в коде происходит через addBatch

private boolean deployTables() {
try {
    this.connection = getConnection();
} catch (SQLException ex) {
    this.nextReconnect = -1L;
    Logging.severe("Error creating connection to database. (deploy tables)", ex);
}
try (Statement statement = connection.createStatement()) {
    statement.addBatch(CREATE_TABLE_KITS_SETTINGS);
    statement.addBatch(CREATE_TABLE_KITS_ITEMS);
    statement.addBatch(CREATE_TABLE_KITS_LOG);
    statement.addBatch(CREATE_TABLE_KITS_LOG_INDEX);
    statement.executeBatch();
    statement.close();
    return true;
} catch (SQLException ex) {
    Logging.severe("Error deploy tables tables in database.", ex);
    return false;
}

}

READ ALSO
Время и дата определяются не правильно

Время и дата определяются не правильно

Делаю чат с помощью FirebaseВозникла проблема с датой и временем

337
Android - загрузка изображения в базу данных

Android - загрузка изображения в базу данных

Я использую бесплатный хостинг, для практики

301
Передать инструкции клиентам с помощью socket java

Передать инструкции клиентам с помощью socket java

Есть клиент и сервер подключенные по сокетуНеобходимо сделать чтобы сервер мог отправлять клиенту данные и список действий над ними без...

220
Что значит класс определяет метод?

Что значит класс определяет метод?

Что значит класс определяет метод?

292