したがって、外部キーを追加するときにエラーが発生します。 EERダイアグラムモデルを使用して、MySQL Workbenchに外部キーを追加しました。ワークベンチが追加しようとする行は次のとおりです。
CREATE SCHEMA IF NOT EXISTS `barberDB` DEFAULT CHARACTER SET latin1 ;
USE `barberDB` ;
-- -----------------------------------------------------
-- Table `barberDB`.`BARBER`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `barberDB`.`BARBER` (
`ID` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `barberDB`.`CUSTOMER`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `barberDB`.`CUSTOMER` (
`ID` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`isHaircut` INT NULL,
`isBeard` INT NULL,
`isEyebrows` INT NULL,
`BARBER_ID` INT NOT NULL,
PRIMARY KEY (`ID`),
INDEX `fk_CUSTOMER_BARBER_idx` (`BARBER_ID` ASC) VISIBLE,
CONSTRAINT `fk_CUSTOMER_BARBER`
FOREIGN KEY (`BARBER_ID`)
REFERENCES `barberDB`.`BARBER` (`ID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
私が得るエラーは次のとおりです:
ERROR: Error 1064: 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 'VISIBLE,
CONSTRAINT `fk_CUSTOMER_BARBER`
FOREIGN KEY (`BARBER_ID`)
REF' at line 12
SQL Code:
-- -----------------------------------------------------
-- Table `barberDB`.`CUSTOMER`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `barberDB`.`CUSTOMER` (
`ID` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`isHaircut` INT NULL,
`isBeard` INT NULL,
`isEyebrows` INT NULL,
`BARBER_ID` INT NOT NULL,
PRIMARY KEY (`ID`),
INDEX `fk_CUSTOMER_BARBER_idx` (`BARBER_ID` ASC) VISIBLE,
CONSTRAINT `fk_CUSTOMER_BARBER`
FOREIGN KEY (`BARBER_ID`)
REFERENCES `barberDB`.`BARBER` (`ID`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
SQL script execution finished: statements: 6 succeeded, 1 failed
Fetching back view definitions in final form.
Nothing to fetch
解決策を探しましたが、括弧が重要であるか、逆引用符であることがわかりましたが、コードはツールによって作成されているため、私には正しいようです。エラーの原因は何ですか?
これをお探しの方は、EER Diagram Modelウィンドウで、MySQLバージョンがSQLスクリプトの生成に使用するように設定できます。 [編集]、[設定]、[モデリング]セクション、[MySQL]の順に進み、カスタムMySQLバージョンを設定します。
MySQL Workbenchでは、サーバーに接続しているときに、メインメニューから[サーバー]をクリックし、次に[サーバーステータス]をクリックします。
[バージョン:X.X]を使用してEER Diagramタグに移動し、メインメニューの[編集]をクリックして[設定]をクリックし、[モデリング]セクションの[MySQL]で以前に使用したカスタムMySQLバージョンを設定します。
MySQLのバージョンを確認して更新します。
設定->モデリング-> MySQL->デフォルトのターゲットMySQLバージョン
私のMySQLバージョンは5.7.21です。
ありがとう@imnothuman
MacOS MySQL Workbenchバージョンでは、MySQLスクリプトバージョンをここで設定できます。
開いたEER図から:
モデル->モデルオプション。
MySQLタブ。
「グローバル設定のデフォルトを使用する」のチェックを外します。
「ターゲットMySQLバージョン」入力でバージョンを設定します。
私はmysqlバージョン5.5.62を使用していました。
行INDEX 'fk_CUSTOMER_BARBER_idx' ('BARBER_ID' ASC) VISIBLE,
のコメントは私にとってはうまくいきました。