0

I am trying to run a CREATE TABLE script which has multiple INDEXES.

CREATE TABLE IF NOT EXISTS Equipment (
    EquipmentID BIGINT  UNSIGNED UNIQUE NOT NULL AUTO_INCREMENT,
    Type VARCHAR(255) NOT NULL,
    Make VARCHAR(255),
    Model VARCHAR(255),
    Description VARCHAR(255),
    OperationNotes TEXT,
    Damaged BOOLEAN DEFAULT 0,
    PRIMARY KEY (EquipmentID),
    INDEX ('EquipmentID'),
    INDEX('Type'),
    INDEX('Model'),
    INDEX('Description')
    INDEX('Damaged')
);

However I get a syntax error:

"(" is not valid at this position for this server version

On line:

    INDEX ('EquipmentID'),
Lyra Orwell
  • 1,048
  • 4
  • 17
  • 46
  • 1
    remove single quotes from column names in index defintion – Jens Mar 07 '20 at 10:49
  • 1
    INDEX('Description') is missing a comma and please read https://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks-in-mysql – P.Salmon Mar 07 '20 at 10:52

1 Answers1

0

Single quote (') denote string literals. When referring to object names (such as columns), you shouldn't use single quotes. Remove them, and you should be OK. Also, note that a primary key implicitly creates an index, so you don't need to explicitly create an index on EquipmentID:

CREATE TABLE IF NOT EXISTS Equipment (
    EquipmentID BIGINT  UNSIGNED UNIQUE NOT NULL AUTO_INCREMENT,
    Type VARCHAR(255) NOT NULL,
    Make VARCHAR(255),
    Model VARCHAR(255),
    Description VARCHAR(255),
    OperationNotes TEXT,
    Damaged BOOLEAN DEFAULT 0,
    PRIMARY KEY (EquipmentID),
    INDEX (Type),
    INDEX (Model),
    INDEX (Description),
    INDEX (Damaged)
);
Mureinik
  • 297,002
  • 52
  • 306
  • 350