I am trying to learn MySQL for one simple application. While I am trying to create a table with foreign key, I am getting the following error.
mysql> create table User_Activity (SLNO INT NOT NULL AUTO_INCREMENT,
DATEOFTASK TIMESTAMP default NOW(),
TASKNAME VARCHAR(30) NOT NULL,
TASKACTION VARCHAR(30) NOT NULL,
BACKUP VARCHAR(5) NOT NULL,
TASKSTATUS VARCHAR(15) NOT NULL,
HANDLEDBY VARCHAR(30) NOT NULL SET utf8 DEFAULT NULL ,
PRIMARY KEY (SLNO),
FOREIGN KEY (HANDLEDBY) REFERENCES User_Access(NAME));
And error is ( Even with out SET utf8 DEFAULT NULL I am getting error)
ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right
syntax to use near 'SET utf8 DEFAULT NULL , PRIMARY KEY (SLNO),
FOREIGN KEY (HANDLEDBY) REFERENCES U' at line 1
Error without SET utf8 DEFAULT NULL :
mysql> create table User_Activity (SLNO INT NOT NULL AUTO_INCREMENT,
DATEOFTASK TIMESTAMP default NOW(),
TASKNAME VARCHAR(30) NOT NULL,
TASKACTION VARCHAR(30) NOT NULL,
BACKUP VARCHAR(5) NOT NULL,
TASKSTATUS VARCHAR(15) NOT NULL,
HANDLEDBY VARCHAR(30),
PRIMARY KEY (SLNO), FOREIGN KEY (HANDLEDBY) REFERENCES User_Access(NAME));
ERROR 1005 (HY000): Can't create table 'activity.User_Activity' (errno: 150)
The Description of User_Access table is,
mysql> DESC User_Access;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| SLNO | int(11) | NO | PRI | NULL | auto_increment |
| NAME | varchar(30) | NO | | NULL | |
| PASSWORD | varchar(30) | NO | | NULL | |
| DESIGNATION | varchar(30) | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
4 rows in set (0.07 sec)
EDIT 1:
mysql> create table User_Activity (SLNO INT NOT NULL AUTO_INCREMENT,
DATEOFTASK TIMESTAMP default NOW(), TASKNAME VARCHAR(30) NOT NULL,
TASKACTION VARCHAR(30) NOT NULL, BACKUP VARCHAR(5) NOT NULL,
TASKSTATUS VARCHAR(15) NOT NULL, HANDLEDBY VARCHAR(30) NOT NULL
CHARACTER SET utf8 DEFAULT NULL , PRIMARY KEY (SLNO), FOREIGN KEY
(HANDLEDBY) REFERENCES User_Access(NAME));
ERROR 1064 (42000): You
have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'CHARACTER
SET utf8 DEFAULT NULL , PRIMARY KEY (SLNO), FOREIGN KEY (HANDLEDBY)
RE' at line 1 mysql>
Yes User_Access table is Inno_DB only , here is the output
mysql> SHOW CREATE TABLE User_Access;
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| User_Access | CREATE TABLE `User_Access` (
`SLNO` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(30) NOT NULL,
`PASSWORD` varchar(30) NOT NULL,
`DESIGNATION` varchar(30) NOT NULL,
PRIMARY KEY (`SLNO`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 |
+-------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.05 sec)