0

我在学校有一个项目,我必须使用 Derby DB。我正在使用 eclipse 和 SQL Scrapbook 来执行我的 SQL 脚本。

问题是:我的 SQL 脚本是由 Mysql Workbench 生成的,我们做了一个模式,然后将其导出到 .sql

当我尝试在 SQL Scrapbook 中执行它时,我有很多错误,sql 似乎不适合 derby(例如,AUTOINCREMENT 现在是(START WITH 1,INCREMENT BY 1)。

这是我的 .sql :

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

DROP SCHEMA IF EXISTS `mydb` ;
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;

-- -----------------------------------------------------
-- Table `mydb`.`User`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`User` ;

CREATE  TABLE IF NOT EXISTS `mydb`.`User` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) NOT NULL ,
  `lastname` VARCHAR(45) NOT NULL ,
  `email` VARCHAR(45) NOT NULL ,
  `adress` VARCHAR(45) NOT NULL ,
  `city` VARCHAR(45) NOT NULL ,
  `zip` VARCHAR(45) NOT NULL ,
  `login` VARCHAR(45) NOT NULL ,
  `password` VARCHAR(45) NOT NULL ,
  `admin` TINYINT(1) NOT NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;


-- -----------------------------------------------------
-- Table `mydb`.`Movie`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Movie` ;

CREATE  TABLE IF NOT EXISTS `mydb`.`Movie` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(45) NOT NULL ,
  `resume` VARCHAR(500) NULL ,
  `genre` VARCHAR(60) NULL ,
  `grade` INT(11) NULL ,
  `review_pub` VARCHAR(200) NULL ,
  `review_gen` VARCHAR(200) NULL ,
  `poster` VARCHAR(100) NULL ,
  `duration` INT(11) NULL ,
  `release_date` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`Projection`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`Projection` ;

CREATE  TABLE IF NOT EXISTS `mydb`.`Projection` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '            ' ,
  `date` DATE NULL ,
  `length` INT(11) NULL ,
  `Movie_id` INT NOT NULL ,
  `price` DECIMAL(10,0) NULL ,
  `location` VARCHAR(45) NOT NULL ,
  `place_nbr` INT(11) NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_Projection_Movie` (`Movie_id` ASC) ,
  CONSTRAINT `fk_Projection_Movie`
    FOREIGN KEY (`Movie_id` )
    REFERENCES `mydb`.`Movie` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`command`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`command` ;

CREATE  TABLE IF NOT EXISTS `mydb`.`command` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `Projection_id` INT NOT NULL ,
  `User_id` INT NOT NULL ,
  `paid` TINYINT(1) NOT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_command_Projection1` (`Projection_id` ASC) ,
  INDEX `fk_command_User1` (`User_id` ASC) ,
  CONSTRAINT `fk_command_Projection1`
    FOREIGN KEY (`Projection_id` )
    REFERENCES `mydb`.`Projection` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_command_User1`
    FOREIGN KEY (`User_id` )
    REFERENCES `mydb`.`User` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

谢谢

4

1 回答 1

0

尝试使用 DdlUtils ( http://db.apache.org/ddlutils/ ) 从 MySQL 数据库中导出模式,然后可以将相同的模式导入 Derby。

于 2013-10-10T14:02:34.840 回答