| Bug #7831 | ALTER TABLE ADD CONSTRAINT gives wrong error message | ||
|---|---|---|---|
| Submitted: | 12 Jan 2005 11:37 | Modified: | 15 Feb 2005 22:39 |
| Reporter: | Hakan Kuecuekyilmaz | ||
| Status: | Closed | ||
| Category: | Server: InnoDB | Severity: | S3 (Non-critical) |
| Version: | 5.0.2/5.0.3 | OS: | Linux (Linux) |
| Assigned to: | Heikki Tuuri | Target Version: | |
[12 Jan 2005 11:37]
Hakan Kuecuekyilmaz
[12 Jan 2005 12:16]
Aleksey Kishkin
The same for 4.1.9 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.1.9 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE TABLE t1 (a int) ENGINE InnoDB; Query OK, 0 rows affected (0.04 sec) mysql> ALTER TABLE t1 ADD CONSTRAINT PRIMARY KEY (a); ERROR 1005 (HY000): Can't create table './test/#sql-c93_1.frm' (errno: 150) mysql>
[12 Jan 2005 12:44]
Jan Lindström
This is not exactly a bug, rather a feature request. Adding the primary key constraint fails because the field is not declared as not null. A primary key is a unique key where all key columns must be defined as not null. You can print error messages consisting errno with perror e.g. jan@hundin:~/trans/mysql-5.0/extra> perror 150 Error code 150: Unknown error 150 150 = Foreign key constraint is incorrectly formed We really need better error reporting tool to MySQL.
[12 Jan 2005 13:26]
Hakan Kuecuekyilmaz
If column is defined as NOT NULL, it still fails: 5.0.2-alpha-debug-log [13:32] root@test>CREATE TABLE t1 (a int not null) ENGINE InnoDB; Query OK, 0 rows affected (0.10 sec) 5.0.2-alpha-debug-log [13:33] root@test>ALTER TABLE t1 ADD CONSTRAINT PRIMARY KEY (a); ERROR 1005 (HY000): Can't create table './test/#sql-4e31_1.frm' (errno: 150) 5.0.2-alpha-debug-log
[21 Jan 2005 18:01]
Heikki Tuuri
Fixed in 4.1 and 5.0. --Heikki
[5 Dec 2006 8:59]
Janeve George
Hi, ALTER TABLE table_infos ADD CONSTRAINT fk_cust_payterms FOREIGN KEY (activities_id) REFERENCES activities (id); is also creating error in MySQL 5.0.27: [ALTER - 0 row(s), 0.094 secs] [Error Code: 1005, SQL State: HY000] Can't create table '.\test\#sql-af8_2.frm' (errno: 150)
[5 Dec 2006 14:31]
Heikki Tuuri
Janeve, please post the complete table definitions. You can use SHOW INNODB STATUS\G to look at the detailed description of the latest foreign key error. Regards, Heikki
[14 Jan 2008 12:19]
Samuele Manfrin
Main problem when you receive this error in foreign key is related to the INT and UNSIGNED INT difference in key pair. You should verify that both fields have SAME attributes: generally a primary key is unsigned with auto_increment; if you reference it with a foreign key that is tied to a field that is simply an INT you receive this 150 error. Typing "perror 150" you receive an answer that is quite unuseful... :-) SamPisa
[21 Oct 9:33]
vlada vanek
omg, i had same problem and your comment help a lot. I had reference between BIGINT and INT.
