web-dev-qa-db-ja.com

MySQL Workbenchで外部キーを追加するときのMySQLエラー1064

したがって、外部キーを追加するときにエラーが発生します。 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 [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_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

解決策を探しましたが、括弧が重要であるか、逆引用符であることがわかりましたが、コードはツールによって作成されているため、私には正しいようです。エラーの原因は何ですか?

7
NECben067

これをお探しの方は、EER Diagram Modelウィンドウで、MySQLバージョンがSQLスクリプトの生成に使用するように設定できます。 [編集]、[設定]、[モデリング]セクション、[MySQL]の順に進み、カスタムMySQLバージョンを設定します。

18
imnothuman

MySQL Workbenchでは、サーバーに接続しているときに、メインメニューから[サーバー]をクリックし、次に[サーバーステータス]をクリックします。

[バージョン:X.X]を使用してEER Diagramタグに移動し、メインメニューの[編集]をクリックして[設定]をクリックし、[モデリング]セクションの[MySQL]で以前に使用したカスタムMySQLバージョンを設定します。

3
GonSnow

MySQLのバージョンを確認して更新します。

設定->モデリング-> MySQL->デフォルトのターゲットMySQLバージョン

私のMySQLバージョンは5.7.21です。

3
satheesh m

ありがとう@imnothuman

MacOS MySQL Workbenchバージョンでは、MySQLスクリプトバージョンをここで設定できます。

開いたEER図から:
モデル->モデルオプション。
MySQLタブ。
「グローバル設定のデフォルトを使用する」のチェックを外します。
「ターゲットMySQLバージョン」入力でバージョンを設定します。

1
nanocv

私はmysqlバージョン5.5.62を使用していました。

INDEX 'fk_CUSTOMER_BARBER_idx' ('BARBER_ID' ASC) VISIBLE,のコメントは私にとってはうまくいきました。

0