Error
Error Code:
1075
MariaDB Error 1075: Invalid AUTO_INCREMENT Column Definition
Description
MariaDB Error 1075 indicates a fundamental problem with how an AUTO_INCREMENT column is defined in a table. This error typically occurs when a CREATE TABLE or ALTER TABLE statement attempts to define more than one AUTO_INCREMENT column, or when the single AUTO_INCREMENT column is not properly associated with a PRIMARY KEY or UNIQUE KEY.
Error Message
Incorrect table definition; there can be only one auto column and it must be defined as a key
Known Causes
3 known causesMultiple AUTO_INCREMENT Columns
You attempted to define more than one column with the AUTO_INCREMENT attribute within the same table, which is not allowed.
AUTO_INCREMENT Lacks Key
The AUTO_INCREMENT column was defined without being part of a PRIMARY KEY or a UNIQUE KEY constraint, which is a mandatory requirement.
Invalid Table Alteration
An ALTER TABLE statement tried to modify an existing table in a way that introduced multiple AUTO_INCREMENTs or removed a key from an AUTO_INCREMENT column.
Solutions
3 solutions available1. Remove Duplicate AUTO_INCREMENT Columns easy
Identify and remove extra columns defined with AUTO_INCREMENT.
1
Examine the `CREATE TABLE` statement or the table schema for multiple columns marked with `AUTO_INCREMENT`. MariaDB (and MySQL) allows only one `AUTO_INCREMENT` column per table.
2
Modify the `CREATE TABLE` statement to include `AUTO_INCREMENT` on only one column. This column is typically an `INT` or `BIGINT` and is often designated as the primary key.
CREATE TABLE your_table (
id INT AUTO_INCREMENT PRIMARY KEY,
another_column VARCHAR(255),
yet_another_column INT -- Removed AUTO_INCREMENT from here
);
3
If the table already exists, you can alter it to remove the `AUTO_INCREMENT` property from the incorrect column.
ALTER TABLE your_table MODIFY another_column INT;
-- Or if it was intended to be a different type:
-- ALTER TABLE your_table MODIFY another_column VARCHAR(255);
2. Ensure AUTO_INCREMENT Column is a Key easy
Make sure the AUTO_INCREMENT column is defined as a primary key or has a unique index.
1
Verify that the column designated for `AUTO_INCREMENT` is also defined as a `PRIMARY KEY` or has a `UNIQUE` index. MariaDB requires an `AUTO_INCREMENT` column to be indexed.
2
If the `AUTO_INCREMENT` column is not yet a key, add a `PRIMARY KEY` constraint to it during table creation.
CREATE TABLE your_table (
id INT AUTO_INCREMENT,
name VARCHAR(255),
PRIMARY KEY (id)
);
3
If the table already exists, add a `PRIMARY KEY` to the `AUTO_INCREMENT` column.
ALTER TABLE your_table ADD PRIMARY KEY (id);
4
Alternatively, you can add a `UNIQUE` index if `PRIMARY KEY` is not desired for that specific column (though `PRIMARY KEY` is the most common scenario for `AUTO_INCREMENT`).
ALTER TABLE your_table ADD UNIQUE INDEX (id);
3. Correct Table Definition with Multiple AUTO_INCREMENT Columns medium
Recreate the table with a single, correctly defined AUTO_INCREMENT column.
1
Identify all columns in the table definition that have the `AUTO_INCREMENT` attribute. Note which one should be the primary identifier.
2
Create a new table with the correct schema, ensuring only one column has `AUTO_INCREMENT` and it's defined as a `PRIMARY KEY`.
CREATE TABLE new_your_table (
id INT AUTO_INCREMENT PRIMARY KEY,
column_a VARCHAR(255),
column_b INT
);
3
Copy the data from the old table to the new table. Be mindful of the order of columns and potential data type mismatches.
INSERT INTO new_your_table (column_a, column_b) SELECT column_a, column_b FROM your_table;
4
Drop the old table.
DROP TABLE your_table;
5
Rename the new table to the original table's name.
RENAME TABLE new_your_table TO your_table;