"Morten Gulbrandsen" <[EMAIL PROTECTED]> wrote: > I think something is wrong with my administration, > > Basically I get these messages, > > ERROR 1005 at line 9: Can't create table '.\company\department.frm' > (errno: 150) > > ERROR 1045: Access denied for user: '[EMAIL PROTECTED]' (Using password: > YES) > > ERROR 1133: Can't find any matching row in the user table > > C:\mysql\examples\elmasri>mysql -u root -p******* > Welcome to the MySQL monitor. Commands end with ; or \g. > Your MySQL connection id is 16 to server version: 4.1.0-alpha-max-debug > > Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > > mysql> use mysql; > Database changed > mysql> update user set password = password('navathe') where user = > 'elmasri'; > Query OK, 1 row affected (0.02 sec) > Rows matched: 1 Changed: 1 Warnings: 0 > > mysql> flush privileges; > Query OK, 0 rows affected (0.02 sec) > > mysql> quit > Bye > > C:\mysql\examples\elmasri>mysql -u elmasri -pnavathe company > Welcome to the MySQL monitor. Commands end with ; or \g. > Your MySQL connection id is 17 to server version: 4.1.0-alpha-max-debug > > Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > > mysql> quit > Bye > > C:\mysql\examples\elmasri>mysql -u elmasri -pnavathe company < > company_01.sql > ERROR 1005 at line 9: Can't create table '.\company\department.frm' > (errno: 150) > > > C:\mysql\examples\elmasri> > C:\mysql\examples\elmasri>type company_01.sql > # mysql -u root -h localhost -p -vvv < company_01.sql > > USE company; > > # SHOW INNODB STATUS; > > DROP TABLE IF EXISTS DEPARTMENT; > > CREATE TABLE DEPARTMENT > ( > DNAME VARCHAR(15) NOT NULL, > DNUMBER INT NOT NULL, > MGRSSN CHAR(9) NOT NULL, > MGRSTARTDATE DATE, > > PRIMARY KEY (DNUMBER), > UNIQUE (DNAME), > > INDEX (MGRSSN), # between employee and department > FOREIGN KEY (MGRSSN) # a sort of mutually declaration > REFERENCES EMPLOYEE(SSN) # this is declared in employee > > )TYPE = INNODB;
You create table DEPARTMENT with foreign key, which is referenced to the non-existent table EMPLOYEE. So, you need to create both table without foreign keys and then add foreign key constraints or execute SET FOREIGN_KEY_CHECKS=0 before table creation. > > > DROP TABLE IF EXISTS EMPLOYEE; > > CREATE TABLE EMPLOYEE > ( > FNAME VARCHAR(15) NOT NULL, > MINIT CHAR, > LNAME VARCHAR(15) NOT NULL, > SSN CHAR(9) NOT NULL, > BDATE DATE, > ADDRESS VARCHAR(30), > SEX CHAR, > SALARY DECIMAL(10,2), > SUPERSSN CHAR(9), > DNO INT NOT NULL, > > PRIMARY KEY (SSN), > INDEX (SUPERSSN, SSN), > > FOREIGN KEY (SUPERSSN) > REFERENCES EMPLOYEE(SSN), > > INDEX (DNO, DNUMBER), > FOREIGN KEY (DNO) > REFERENCES DEPARTMENT(DNUMBER) # this is declared in department > )TYPE = INNODB; > > > C:\mysql\examples\elmasri>mysql -u root -p******* > Welcome to the MySQL monitor. Commands end with ; or \g. > Your MySQL connection id is 19 to server version: 4.1.0-alpha-max-debug > > Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > > mysql> grant all on company.* to 'elmasri'@'localhost' identified by > 'navathe'; > Query OK, 0 rows affected (0.00 sec) > > mysql> quit > Bye > > C:\mysql\examples\elmasri>mysql -u elmasri -pnavathe company; > ERROR 1045: Access denied for user: '[EMAIL PROTECTED]' (Using password: > YES) > > C:\mysql\examples\elmasri>mysql -u root -p******* > Welcome to the MySQL monitor. Commands end with ; or \g. > Your MySQL connection id is 21 to server version: 4.1.0-alpha-max-debug > > Type 'help;' or '\h' for help. Type '\c' to clear the buffer. > > mysql> set password for 'elmasri'@'localhost' = password('navathe'); > Query OK, 0 rows affected (0.00 sec) > > mysql> set password for 'elmasri'@'%' = password('navathe'); > ERROR 1133: Can't find any matching row in the user table > mysql> It means the there is no any entry 'elmasri'@'%' in the table user. > I try again with > Manually > > mysql> create table employee( fname varchar(15) )type=innodb; > Query OK, 0 rows affected (0.00 sec) > > mysql> DROP TABLE IF EXISTS EMPLOYEE; > Query OK, 0 rows affected (0.00 sec) > > And > > > mysql> CREATE TABLE EMPLOYEE > -> ( > -> FNAME VARCHAR(15) NOT NULL, > -> MINIT CHAR, > -> LNAME VARCHAR(15) NOT NULL, > -> SSN CHAR(9) NOT NULL, > -> BDATE DATE, > -> ADDRESS VARCHAR(30), > -> SEX CHAR, > -> SALARY DECIMAL(10,2), > -> SUPERSSN CHAR(9), > -> DNO INT NOT NULL, > -> > -> PRIMARY KEY (SSN), > -> INDEX (SUPERSSN, SSN), > -> > -> FOREIGN KEY (SUPERSSN) > -> REFERENCES EMPLOYEE(SSN), > -> > -> INDEX (DNO, DNUMBER), > -> FOREIGN KEY (DNO) > -> REFERENCES DEPARTMENT(DNUMBER) # this is declared in department > -> )TYPE = INNODB; > ERROR 1072: Key column 'DNUMBER' doesn't exist in table I don't see column DNUMBER in the above create table definition. > mysql> create table employee( fname varchar(15) )type=innodb; > Query OK, 0 rows affected (0.00 sec) > > > > mysql> > mysql> CREATE TABLE EMPLOYEE > -> ( > -> FNAME VARCHAR(15) NOT NULL, > -> MINIT CHAR, > -> LNAME VARCHAR(15) NOT NULL, > -> SSN CHAR(9) NOT NULL, > -> BDATE DATE, > -> ADDRESS VARCHAR(30), > -> SEX CHAR, > -> SALARY DECIMAL(10,2), > -> SUPERSSN CHAR(9), > -> DNO INT NOT NULL, > -> > -> PRIMARY KEY (SSN), > -> INDEX (SUPERSSN, SSN), > -> > -> FOREIGN KEY (SUPERSSN) > -> REFERENCES EMPLOYEE(SSN), > -> > -> INDEX (DNO), > -> FOREIGN KEY (DNO) > -> REFERENCES DEPARTMENT(DNUMBER) # this is declared in department > -> )TYPE = INNODB; > ERROR 1005: Can't create table '.\company\employee.frm' (errnoo: 150) > mysql> exit > Bye > > C:\mysql\examples\elmasri>mysql -u elmasri -pnavathe company < > company_01.sql > ERROR 1005 at line 9: Can't create table '.\company\department.frm' > (errno: 150) > > This shows that I actually can create a table, > > My question is now, > > Is this code ansi sql correct ? > > How can I Modify it to run under the latest MySQL ? > > Is it something wrong with the users I have created ? > > I expect one user and one password for entering mysql, > And depending upon which database I'd like to use > I expect for each database I'd like to use, one second password, > > This seems to be another topic, > When I write > > mysql> grant all on company.* to 'elmasri'@'localhost' identified by > 'navathe'; > Query OK, 0 rows affected (0.00 sec) > > mysql> grant all on company.* to 'elmasri'@'%' identified by 'navathe'; > Query OK, 0 rows affected (0.00 sec) > > mysql> > > Then I should be able to do whatever SQL permits ? User 'elmasri' has all privileges on the database 'company'. -- For technical support contracts, goto https://order.mysql.com/?ref=ensita This email is sponsored by Ensita.net http://www.ensita.net/ __ ___ ___ ____ __ / |/ /_ __/ __/ __ \/ / Victoria Reznichenko / /|_/ / // /\ \/ /_/ / /__ [EMAIL PROTECTED] /_/ /_/\_, /___/\___\_\___/ MySQL AB / Ensita.net <___/ www.mysql.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]