我想把oracle转换成mysql,语句如下:   
  create table bbsuser(
  username      VARCHAR(20)  PRIMARY KEY,
  password      VARCHAR(20)  NOT NULL,
  nickname      VARCHAR(20)  NOT NULL,
  sex           VARCHAR(2)   NOT NULL,
  birthyear     VARCHAR(4)   NOT NULL,
  birthmonth    VARCHAR(4)   NOT NULL,
  birthday      VARCHAR(4)   NOT NULL,
  e_mail        VARCHAR(50)  NOT NULL,
  mobile        VARCHAR(20)  NULL,
  signature     VARCHAR(250) NULL,
  usergrade     VARCHAR(20)  NULL,
  userscore     VARCHAR(20)  NULL
)TYPE=INNODB;create table sort(
  id            INT          PRIMARY KEY,
  sortname      VARCHAR(20)  NOT NULL,
  master        VARCHAR(20)  NULL
                REFERENCES bbsuser(username) ON DELETE CASCADE
)TYPE=INNODB;create table topic(
  id            INT            PRIMARY KEY,
  topicname     VARCHAR(20)    NOT NULL,
  topiccontent  VARCHAR(2000)  NULL,
  owner         VARCHAR(20)    NOT NULL,
                REFERENCES bbsuser(username) ON DELETE CASCADE ,
  time          DATE           NOT NULL,
  sortid        INT            NOT NULL,
                REFERENCES sort(id) ON DELETE CASCADE 
)TYPE=INNODB;create table responses(
  id            INT            PRIMARY KEY,
  title         VARCHAR(20)    NOT NULL,
  content       VARCHAR(2000)  NULL,
  owner         VARCHAR(20)    NOT NULL,
                REFERENCES bbsuser(username) ON DELETE CASCADE ,
  time          DATE           NOT NULL,
  topicid       INT            NOT NULL,
                REFERENCES topic(id) ON DELETE CASCADE 
)TYPE=INNODB;create table bbsuser(
  username      VARCHAR(20)  PRIMARY KEY,
  password      VARCHAR(20)  NOT NULL,
  nickname      VARCHAR(20)  NOT NULL,
  sex           VARCHAR(2)   NOT NULL,
  birthyear     VARCHAR(4)   NOT NULL,
  birthmonth    VARCHAR(4)   NOT NULL,
  birthday      VARCHAR(4)   NOT NULL,
  e_mail        VARCHAR(50)  NOT NULL,
  mobile        VARCHAR(20)  NULL,
  signature     VARCHAR(250) NULL,
  usergrade     VARCHAR(20)  NULL,
  userscore     VARCHAR(20)  NULL
)TYPE=INNODB;create table sort(
  id            INT          PRIMARY KEY,
  sortname      VARCHAR(20)  NOT NULL,
  master        VARCHAR(20)  NULL
                REFERENCES bbsuser(username) ON DELETE CASCADE
)TYPE=INNODB;create table topic(
  id            INT            PRIMARY KEY,
  topicname     VARCHAR(20)    NOT NULL,
  topiccontent  VARCHAR(2000)  NULL,
  owner         VARCHAR(20)    NOT NULL,
                REFERENCES bbsuser(username) ON DELETE CASCADE ,
  time          DATE           NOT NULL,
  sortid        INT            NOT NULL,
                REFERENCES sort(id) ON DELETE CASCADE 
)TYPE=INNODB;create table responses(
  id            INT            PRIMARY KEY,
  title         VARCHAR(20)    NOT NULL,
  content       VARCHAR(2000)  NULL,
  owner         VARCHAR(20)    NOT NULL,
                REFERENCES bbsuser(username) ON DELETE CASCADE ,
  time          DATE           NOT NULL,
  topicid       INT            NOT NULL,
                REFERENCES topic(id) ON DELETE CASCADE 
)TYPE=INNODB;可运行时,创建前面两个表成功了。后面两个,也就是topic和responses时发生了错误,错误提示如下:
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 'REFERENCES bbsuser(username) ON DELETE CASCADE,time    DATE  ' at line 6 为什么会这样啊??希望哪位高手能够指点迷津!!谢谢!

解决方案 »

  1.   

    把 ON DELETE CASCADE去掉
      

  2.   

    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 'REFERENCES bbsuser(username) ,time    DATE  NOT NULL,sortid ' at line 6
      

  3.   

    MySQL外键的语法应该是类似这样的:
    FOREIGN KEY (myfk) REFERENCES bbsuser(username),
      

  4.   

    正确的语法可以这么写:
    CONSTRAINT `FK_UserName` FOREIGN KEY (`username`) REFERENCES `bbsuser` (`username`)