Error No 150 In Mysql
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings mysql error 1005 (hy000) and policies of this site About Us Learn more about Stack Overflow
Mysql Error 150 Can't Create Table
the company Business Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation mysql error 1005 can't create table Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; it mysql error 1005 errno 150 only takes a minute: Sign up MySQL: Can't create table (errno: 150) up vote 121 down vote favorite 18 I am trying to import a .sql file and its failing on creating tables. Here's the query that fails: CREATE TABLE `data` ( `id` int(10) unsigned NOT NULL, `name` varchar(100) NOT NULL, `value` varchar(15) NOT NULL, UNIQUE KEY `id` (`id`,`name`), CONSTRAINT `data_ibfk_1`
Error 1005 (hy000) Can't Create Table (errno 150)
FOREIGN KEY (`id`) REFERENCES `keywords` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; I exported the .sql from the the same database, I dropped all the tables and now im trying to import it, why is it failing? MySQL: Can't create table './dbname/data.frm' (errno: 150) sql mysql phpmyadmin mysql-error-1005 share|improve this question edited Oct 31 '10 at 0:37 OMG Ponies 199k36356415 asked Oct 31 '10 at 0:24 gtilx 75421018 1 For essentially all the causes of this error, here is an exhaustive resource for what causes errno 150 (and errno 121/other foreign key errors) in MySQL. –John Smith Sep 29 '12 at 0:47 15 I've found that the columns must be identical (even the unsigned flag must match). –Justin Skiles Dec 19 '12 at 19:54 3 @JohnSmith ... where? –Charles Wood Jul 29 '13 at 17:07 3 I suggest reading this blog post that lists 10 possible causes: verysimple.com/2006/10/22/… –Mark Amery Jan 2 '14 at 13:54 1 @trejder Curses! –Charles Wood Nov 7 '14 at 17:16 | show 2 more comments
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about mysql cannot create table errno 150 Stack Overflow the company Business Learn more about hiring developers or posting ads with mysql can't create table errno 121 us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is
Can't Create Table Errno 121
a community of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up MySQL Errno 150 up vote 18 down vote favorite 4 I'm creating a http://stackoverflow.com/questions/4061293/mysql-cant-create-table-errno-150 few simple tables and I can't get passed this foreign key error and I'm not sure why. Here's the script below. create TABLE Instructors ( ID varchar(10), First_Name varchar(50) NOT NULL, Last_Name varchar(50) NOT NULL, PRIMARY KEY (ID) ); create table Courses ( Course_Code varchar(10), Title varchar(50) NOT NULL, PRIMARY KEY (Course_Code) ); create table Sections ( Index_No int, Course_Code varchar(10), Instructor_ID varchar(10), PRIMARY KEY (Index_No), FOREIGN KEY (Course_Code) REFERENCES http://stackoverflow.com/questions/16227199/mysql-errno-150 Courses(Course_Code) ON DELETE cascade ON UPDATE cascade, FOREIGN KEY (Instructor_ID) REFERENCES Instructors(ID) ON DELETE set default ); Error Code: 1005. Can't create table '336_project.sections' (errno: 150) My data types seem identical and the syntax seems correct. Can anyone point out what I'm not seeing here? Thank you! I'm using MySQL Workbench 5.2 mysql table foreign-keys mysql-workbench share|improve this question asked Apr 26 '13 at 1:13 Sixers17 1771211 add a comment| 8 Answers 8 active oldest votes up vote 22 down vote accepted If you're using the InnoDB engine, the ON DELETE SET DEFAULT is your problem. Here's an excerpt from the manual: While SET DEFAULT is allowed by the MySQL Server, it is rejected as invalid by InnoDB. CREATE TABLE and ALTER TABLE statements using this clause are not allowed for InnoDB tables. You can use ON DELETE CASCADE or ON DELETE SET NULL, but not ON DELETE SET DEFAULT. There's more information here. share|improve this answer edited Apr 26 '13 at 1:46 answered Apr 26 '13 at 1:28 Ed Gibbs 18.1k11945 Hi, thanks for your quick response. I tried changing to SET NULL and it still doesn't work. I even removed all of the ON UPDATE/DELETE lines and still gives me the error. Should
SQL Insertion Learn how web applications with access to your database (e.g. MySQL) may be used to poison, dump, or delete information in your database. MySQL Foreign Keys Learn all about MySQL foreign keys in this white paper. MySQL Foreign Key Errors and Errno: 150 Learn how to avoid http://www.eliacom.com/mysql-gui-wp-errno-150.php MySQL foreign key errors, including the notorious Errno:150 in this white paper. MySQL/SQL Data Validation (with PHP) Learn the importance of data validation in web applications when information is accepted from third parties, or even from internal users. MySQL Foreign Key Errors: http://dba.stackexchange.com/questions/80435/mysql-create-table-shows-error-1005-errno-150 errno 150, errno 121, and others Diagnosing Errors SHOW ENGINE INNODB STATUS is Your New Best Friend: Click for solutionIf you get one of the really helpful errors (sarcasm) like the errno 150 or errno 121, then by simply typing in create table SHOW ENGINE INNODB STATUS, there is a section called "LATEST FOREIGN KEY ERROR". Under that it will give you a very helpful error message, which typically will tell you right away what is the matter. What's the catch?You need SUPER privileges to run it, so if you don't have that, you'll just have to test out the following scenarios. Use Eliacom's MySQL GUI tool to catch most errors: Click for solutionYou can either download the MySQL GUI to install on your own can't create table server, or you can use our free online demo of the MySQL GUI to do it. You can check out our video on how to create foreign keys and indexes using Eliacom's MySQL GUI tool.. MySQL errno 150 ERROR 1005 (HY000): Can't create table 'table' (errno: 150) ERROR 1025 (HY000): Error on rename of 'table' to 'newtable' (errno: 150) Causes and Solutions for errno 150 Data Types Don't Match: Click for solutionThe types of the columns have to be the same (usually). This is one of the most common reasons for errno 150. For instance, if the type of the child column is VARCHAR(50), the type of the parent column should be exactly VARCHAR(50) (since they're supposed to hold the same data). For numeric types, if one is UNSIGNED, then both have to be UNSIGNED. They should match exactly!. I have run into circumstances where it has let me create a foreign key where the child column was a VARCHAR(50) and the parent column was a VARCHAR(200). Interestingly, if I tried to do the opposite for the same tables, reference a child column that was a VARCHAR(200) to a parent column that was a VARCHAR(50), it threw the errno 150 error. This all might depend on the version of MySQL you are using, and really, the data types should match exactly since the same data is being stored in both places. How do you fix it? You need to check the data types for the columns
log in tour help Tour Start here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers or posting ads with us Database Administrators Questions Tags Users Badges Unanswered Ask Question _ Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. Join them; it only takes a minute: Sign up Here's how it works: Anybody can ask a question Anybody can answer The best answers are voted up and rise to the top Mysql Create table shows ERROR 1005 errno 150 up vote 0 down vote favorite I am trying to make a junction table, but I getting a ERROR 1005 errno 150 CREATE TABLE 61furiousFistPokemon( cardNumber int NOT NULL PRIMARY KEY, pokemonName VARCHAR(12), type VARCHAR(10), stage VARCHAR(10), evolvesFrom VARCHAR(12), HP INT, retreatCost INT, weakness VARCHAR(10), weaknessAmount VARCHAR(5), resistance VARCHAR(5), resistanceAmount VARCHAR(5) ); CREATE TABLE cardTags ( tagId int NOT NULL AUTO_INCREMENT PRIMARY KEY, tagName VARCHAR(60) NOT NULL ); CREATE TABLE 61furiousFistPokemonTags ( tagId int NOT NULL AUTO_INCREMENT PRIMARY KEY, pokemonCardNumber int, tagName VARCHAR(60), FOREIGN KEY (pokemonCardNumber) REFERENCES 61furiousFistPokemon(cardNumber), FOREIGN KEY (tagName) REFERENCES cardTags(tagName) ); Any help would be greatly appreciated. mysql innodb foreign-key table share|improve this question edited Oct 17 '14 at 15:23 RolandoMySQLDBA 108k15138274 asked Oct 17 '14 at 3:43 user50479 add a comment| 3 Answers 3 active oldest votes up vote 1 down vote tagName column in table cardTags is not defined as primary key and you are declaring foreign key FOREIGN KEY (tagName) REFERENCES cardTags(tagName). share|improve this answer answered Oct 17 '14 at 8:13 Nawaz Sohail 611214 Although you did not provide a solution, +1 for revealing root cause. –RolandoMySQLDBA Oct 17 '14 at 15:19 add a comment| up vote 0 down vote Very often it happens, when the foreign key and the reference key don't have same type or same length. Click here for more details. share|improve this answer answered Oct 17 '14 at 7:30 Musakkhir Sayyed 240314 add a comment| up vote 0 down vote Here is the quick fix: Just add a UNIQUE KEY on tagName in the cardTags table SAMPLE SCRIPT DROP DATABASE IF EXISTS testing; CREATE DATABASE testing; USE testing CREATE TABLE 61furiousFistPokemon( cardNumber int NOT NULL PRIMARY K