Database
Mysql Tutorial
Can't create table 'table_name' (errno: 121) - How to solve MySQL error: Unable to create table, error number: 121
Can't create table 'table_name' (errno: 121) - How to solve MySQL error: Unable to create table, error number: 121

Can't create table 'table_name' (errno: 121) - How to solve MySQL error: Unable to create table, error number: 121, specific code examples are required
When using a MySQL database, you sometimes encounter error number 121, which prevents the table from being created. This issue often causes frustration among developers because without a specific error message, it is difficult to find a solution. This article explains how to solve this problem and provides specific code examples.
First, let’s understand the cause of this error. Error number 121 is usually caused by foreign key constraints. When you try to create a foreign key in a table, if the table's primary key and foreign key definitions conflict, MySQL will report an error and display "Can't create table 'table_name' (errno: 121)". So, to fix this problem, we need to check and fix the foreign key constraints.
The following are the steps and code examples to solve this problem:
Step 1: Find the problematic foreign key constraint
First, we need to find out which table's foreign key constraint is causing the problem question. You can use the following command to find the problematic table:
SHOW ENGINE INNODB STATUS;
After running this command, you will see the results containing detailed debugging information. In this result, you need to find the line "Latest deadlock:", the specific error message will be listed below. In the error message, "Foreign key constraint is incorrectly formed" usually means that the foreign key constraint is causing the problem.
Step 2: Repair foreign key constraints
Once the problematic foreign key constraint is found, we need to modify the table structure to fix it. Here are some common fixes:
Method 1: Check whether the data types of the primary key and foreign key are consistent
The data types of the primary key and foreign key must be consistent, otherwise error number 121 will result. Make sure the primary key and foreign key have the same data type.
Sample code:
CREATE TABLE table1 (
id INT PRIMARY KEY
);
CREATE TABLE table2 (
id INT,
table1_id INT,
FOREIGN KEY (table1_id) REFERENCES table1(id)
);Method 2: Check whether the fields of the foreign key and the reference table are consistent
The fields referenced by the foreign key must exist in the reference table, and the field types must match. Please ensure that the field names and types of the foreign key and reference table are consistent.
Sample code:
CREATE TABLE table1 (
id INT PRIMARY KEY
);
CREATE TABLE table2 (
table1_id INT,
FOREIGN KEY (table1_id) REFERENCES table1(id)
);Method 3: Check table creation order
If you encounter a situation where there are foreign key constraints between multiple tables, you need to ensure that the table you create The order is correct. Please create the tables in the correct order so that existing tables are referenced when creating foreign keys.
Sample code:
CREATE TABLE table1 (
id INT PRIMARY KEY
);
CREATE TABLE table2 (
id INT PRIMARY KEY,
table1_id INT,
FOREIGN KEY (table1_id) REFERENCES table1(id)
);Step 3: Re-create the table
After completing the above repair steps, you can re-create the problematic table. Run the CREATE TABLE statement to create the table and ensure that no errors are reported again.
Summary:
When MySQL reports the error "Can't create table 'table_name' (errno: 121)", it is usually caused by foreign key constraints. You can solve this problem by checking whether the data types of the primary key and the foreign key are consistent, checking whether the fields of the foreign key and the reference table are consistent, and checking the order in which the tables are created. This article provides specific code examples that I hope will help you solve this problem.
The above is the detailed content of Can't create table 'table_name' (errno: 121) - How to solve MySQL error: Unable to create table, error number: 121. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
Undresser.AI Undress
AI-powered app for creating realistic nude photos
AI Clothes Remover
Online AI tool for removing clothes from photos.
Clothoff.io
AI clothes remover
Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!
Hot Article
Hot Tools
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
How to add a primary key to an existing table in MySQL?
Aug 12, 2025 am 04:11 AM
To add a primary key to an existing table, use the ALTERTABLE statement with the ADDPRIMARYKEY clause. 1. Ensure that the target column has no NULL value, no duplication and is defined as NOTNULL; 2. The single-column primary key syntax is ALTERTABLE table name ADDPRIMARYKEY (column name); 3. The multi-column combination primary key syntax is ALTERTABLE table name ADDPRIMARYKEY (column 1, column 2); 4. If the column allows NULL, you must first execute MODIFY to set NOTNULL; 5. Each table can only have one primary key, and the old primary key must be deleted before adding; 6. If you need to increase it yourself, you can use MODIFY to set AUTO_INCREMENT. Ensure data before operation
Explain database indexing strategies (e.g., B-Tree, Full-text) for a MySQL-backed PHP application.
Aug 13, 2025 pm 02:57 PM
B-TreeindexesarebestformostPHPapplications,astheysupportequalityandrangequeries,sorting,andareidealforcolumnsusedinWHERE,JOIN,orORDERBYclauses;2.Full-Textindexesshouldbeusedfornaturallanguageorbooleansearchesontextfieldslikearticlesorproductdescripti
How to back up a database in MySQL
Aug 11, 2025 am 10:40 AM
Using mysqldump is the most common and effective way to back up MySQL databases. It can generate SQL scripts containing table structure and data. 1. The basic syntax is: mysqldump-u[user name]-p[database name]>backup_file.sql. After execution, enter the password to generate a backup file. 2. Back up multiple databases with --databases option: mysqldump-uroot-p--databasesdb1db2>multiple_dbs_backup.sql. 3. Back up all databases with --all-databases: mysqldump-uroot-p
How to change the GROUP_CONCAT separator in MySQL
Aug 22, 2025 am 10:58 AM
You can customize the separator by using the SEPARATOR keyword in the GROUP_CONCAT() function; 1. Use SEPARATOR to specify a custom separator, such as SEPARATOR'; 'The separator can be changed to a semicolon and plus space; 2. Common examples include using the pipe character '|', space'', line break character '\n' or custom string '->' as the separator; 3. Note that the separator must be a string literal or expression, and the result length is limited by the group_concat_max_len variable, which can be adjusted by SETSESSIONgroup_concat_max_len=10000; 4. SEPARATOR is optional
What is the difference between UNION and UNION ALL in MySQL?
Aug 14, 2025 pm 05:25 PM
UNIONremovesduplicateswhileUNIONALLkeepsallrowsincludingduplicates;1.UNIONperformsdeduplicationbysortingandcomparingrows,returningonlyuniqueresults,whichmakesitsloweronlargedatasets;2.UNIONALLincludeseveryrowfromeachquerywithoutcheckingforduplicates,
How to lock tables in MySQL
Aug 15, 2025 am 04:04 AM
The table can be locked manually using LOCKTABLES. The READ lock allows multiple sessions to read but cannot be written. The WRITE lock provides exclusive read and write permissions for the current session and other sessions cannot read and write. 2. The lock is only for the current connection. Execution of STARTTRANSACTION and other commands will implicitly release the lock. After locking, it can only access the locked table; 3. Only use it in specific scenarios such as MyISAM table maintenance and data backup. InnoDB should give priority to using transaction and row-level locks such as SELECT...FORUPDATE to avoid performance problems; 4. After the operation is completed, UNLOCKTABLES must be explicitly released, otherwise resource blockage may occur.
How to select data from a table in MySQL?
Aug 19, 2025 pm 01:47 PM
To select data from MySQL table, you should use SELECT statement, 1. Use SELECTcolumn1, column2FROMtable_name to obtain the specified column, or use SELECT* to obtain all columns; 2. Use WHERE clause to filter rows, such as SELECTname, ageFROMusersWHEREage>25; 3. Use ORDERBY to sort the results, such as ORDERBYageDESC, representing descending order of age; 4. Use LIMIT to limit the number of rows, such as LIMIT5 to return the first 5 rows, or use LIMIT10OFFSET20 to implement paging; 5. Use AND, OR and parentheses to combine
How to use the IN operator in MySQL?
Aug 12, 2025 pm 03:46 PM
TheINoperatorinMySQLchecksifavaluematchesanyinaspecifiedlist,simplifyingmultipleORconditions;itworkswithliterals,strings,dates,andsubqueries,improvesqueryreadability,performswellonindexedcolumns,supportsNOTIN(withcautionforNULLs),andcanbecombinedwith


