Getting error:
Error executing DDL “create table reading_day_seq (next_val bigint) engine=InnoDB” via JDBC [Unable to create or change a table without a primary key, when the system variable ‘sql_require_primary_key’ is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause performance problems in row-based replication, so please consult your DBA before changing this setting.]
The code works on my local MySQL instance.
Do I need to change a setting? (sql_require_primary_key)
If so, how?
Thank you for any assistance.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Hi there,
On DigitalOcean Managed MySQL, sql_require_primary_key
is enabled by default to avoid issues with replication and performance. That’s why your create table reading_day_seq (next_val bigint)
fails, it doesn’t have a primary key.
You’ve got two options:
You can add a primary key to your sequence table, e.g.:
create table reading_day_seq (
id int auto_increment primary key,
next_val bigint
) engine=InnoDB;
Or you could reconfigure the setting yourself if you really need to disable it. You can do that in the doctl CLI or via API: how to reconfigure Managed MySQL.
Most people would go with option 1, since adding a PK is the safer long-term fix.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.