How to fix ERROR 1504: Number of partitions = 0 not allowed in MySQL

MySQLINTERMEDIATEMEDIUMUpdated Dec 25, 2025· 123 views

This error occurs when you attempt to create or alter a MySQL partitioned table with zero partitions. MySQL requires at least one partition for partitioned tables; if you want to remove all partitions, use DROP TABLE instead.

Quick fix

Fixes ERROR 1504: Number of partitions = 0 not allowed

CREATE TABLE my_table (
  id INT PRIMARY KEY,
  data VARCHAR(255)
) PARTITION BY HASH(id) PARTITIONS 0;
  1. Verify your PARTITIONS clause specifies at least 1
  2. Update your SQL statement to use at least 1 partition
  3. Execute the corrected SQL statement
  4. Verify the table structure if using a GUI tool
mysql — error
CREATE TABLE my_table (
id INT PRIMARY KEY,
data VARCHAR(255)
) PARTITION BY HASH(id) PARTITIONS 0;
ERROR 1504: Number of partitions = 0 not allowed

What this error means

MySQL's partitioning feature requires tables to have at least one partition. When creating a partitioned table using CREATE TABLE or modifying one with ALTER TABLE, you must specify a positive integer value for the PARTITIONS clause. The error ER_NO_PARTS_ERROR (1504) prevents the invalid state of a table having zero partitions, which would be logically impossible—a table must have data storage somewhere.

Typical symptoms

  • CREATE TABLE or ALTER TABLE statement fails immediately when attempting to add or modify partitioning
  • MySQL Workbench or other tools auto-generate invalid DDL with PARTITIONS 0
  • Error appears when enabling partitioning in a database management interface and not adjusting the partition count before applying changes
  • Script execution halts at the DDL statement with error code 1504

Common causes

  1. Manually setting PARTITIONS 0 in a CREATE TABLE or ALTER TABLE statement
  2. Database management tool (such as MySQL Workbench) generating invalid DDL with zero partitions when partitioning is first enabled
  3. Copy-pasting partition configuration that inadvertently specifies 0 partitions
  4. Automated migration scripts or templates that do not validate partition counts before execution

How to fix "ERROR 1504: Number of partitions = 0 not allowed"

1Verify your PARTITIONS clause specifies at least 1

Check your CREATE TABLE or ALTER TABLE statement. The PARTITIONS keyword must be followed by a positive integer value (1 or greater).

Invalid (causes error 1504):

sql
CREATE TABLE my_table (
  id INT PRIMARY KEY,
  data VARCHAR(255)
) PARTITION BY HASH(id) PARTITIONS 0;

Valid:

sql
CREATE TABLE my_table (
  id INT PRIMARY KEY,
  data VARCHAR(255)
) PARTITION BY HASH(id) PARTITIONS 4;
2Update your SQL statement to use at least 1 partition

Change the PARTITIONS value to a positive integer. For most use cases, a good starting point is 4-8 partitions depending on your data volume and query patterns.

sql
CREATE TABLE my_table (
  id INT PRIMARY KEY,
  data VARCHAR(255),
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) PARTITION BY HASH(id) PARTITIONS 4;
3Execute the corrected SQL statement

Run the updated CREATE TABLE or ALTER TABLE command:

sql
CREATE TABLE my_table (
  id INT PRIMARY KEY,
  data VARCHAR(255)
) PARTITION BY HASH(id) PARTITIONS 4;

If successful, you should see no error and the table will be created with the specified number of partitions.

4Verify the table structure if using a GUI tool

If you're using MySQL Workbench or another graphical tool, ensure that when you enable partitioning, the partition count field defaults to or is manually set to at least 1 before applying changes. Check your tool's settings to see if there's a minimum partition count validation you can enable.

Advanced notes

Error 1504 is sometimes encountered when using database design tools that automatically generate partition DDL. In MySQL Workbench version 5.2.17 and later, a minimum partition limit was added to prevent this error. If you're using an older tool, upgrade to a newer version or manually validate partition counts before execution. Note that while you can create a table with just 1 partition, this defeats the purpose of partitioning for performance optimization. In practice, choose a partition count that aligns with your data distribution and query patterns—typically 4, 8, 16, or matching the number of CPU cores on your server. For RANGE or LIST partitioning, each partition must be explicitly defined; the partition count is implicit in the number of partitions you define.

Frequently asked questions

What does "ERROR 1504: Number of partitions = 0 not allowed" mean?
MySQL's partitioning feature requires tables to have at least one partition. When creating a partitioned table using CREATE TABLE or modifying one with ALTER TABLE, you must specify a positive integer value for the PARTITIONS clause. The error ER_NO_PARTS_ERROR (1504) prevents the invalid state of a table having zero partitions, which would be logically impossible—a table must have data storage somewhere.
How do I fix "ERROR 1504: Number of partitions = 0 not allowed"?
This error occurs when you attempt to create or alter a MySQL partitioned table with zero partitions. MySQL requires at least one partition for partitioned tables; if you want to remove all partitions, use DROP TABLE instead.
What causes "ERROR 1504: Number of partitions = 0 not allowed"?
Manually setting PARTITIONS 0 in a CREATE TABLE or ALTER TABLE statement Database management tool (such as MySQL Workbench) generating invalid DDL with zero partitions when partitioning is first enabled Copy-pasting partition configuration that inadvertently specifies 0 partitions
Is the "ERROR 1504: Number of partitions = 0 not allowed" error serious?
It is a medium-severity error — more of a blocker than a risk. The steps above resolve it.

Official resources & further reading