I want to DROP INDEX in mysql with option IF EXISTS but I have found nothing that make it works.
DROP INDEX IF EXISTS index_name ON table_name;
Anyone has any hint?
Right-click the table that contains the index you want to delete and click Design. On the Table Designer menu, click Indexes/Keys. In the Indexes/Keys dialog box, select the index you want to delete. Click Delete.
Try the following command: show index from `my_answers`; then inspect the key name of your index and drop it by its name.
DROP TABLE always removes any indexes, rules, triggers, and constraints that exist for the target table. However, to drop a table that is referenced by a view or a foreign-key constraint of another table, CASCADE must be specified.
Try this,
create procedure DeleteIndex()
begin
IF EXISTS ( SELECT * FROM INFORMATION_SCHEMA.STATISTICS  WHERE TABLE_NAME = 'TableName'
            AND INDEX_NAME = 'IndexName' AND INDEX_SCHEMA='DbName') THEN
   ALTER TABLE  TableName DROP index THead2;
END IF;
END
                        I do not see any straight-forward way to DROP INDEX using IF EXISTS.
As a workaround, I wrote the following Procedure, which works for me.
CREATE PROCEDURE `DropIndexIfExists`(
    IN i_table_name VARCHAR(128),
    IN i_index_name VARCHAR(128)
    )
    BEGIN
    SET @tableName = i_table_name;
    SET @indexName = i_index_name;
    SET @indexExists = 0;
    SELECT 
        1
    INTO @indexExists FROM
        INFORMATION_SCHEMA.STATISTICS
    WHERE
        TABLE_NAME = @tableName
            AND INDEX_NAME = @indexName;
    SET @query = CONCAT(
        'DROP INDEX ', @indexName, ' ON ', @tableName
    );
    IF @indexExists THEN
        PREPARE stmt FROM @query;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END IF;
    END
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With