XAMPP環境でMySQL Workbenchを使ってテーブル作成しようとしたらエラーになった話

2019年3月21日IT, 開発

XAMPPで構築したのMySQLにMySQL Workbenchを使ってテーブルを作成しようとしたらエラーになりました。
同様の内容で困っている方がいたら参考にしていただければと思います。

エラー内容

こんなエラーです。

Error: There was an error while applying the SQL script to the database

ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘)

他のDBは使ってきたのですが、MySQLには慣れていないのです。
MySQL Workbench使って楽しようと思っていたのに、エラーになると途端に困ってしまう、よくないですね。

解決方法

いろいろと試した結果、どうやら自動で作成されたSQLの構文がMariaDBでは使えないようです。

  UNIQUE INDEX `test_id_UNIQUE` (`poems_id` ASC) VISIBLE)

以下のように、「VISIBLE」の指定を外すとうまくいきます。

CREATE TABLE `test`.`poems` (
  `test_id` INT NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255) NULL,
  `created_at` DATETIME NULL,
  `text` LONGTEXT NULL,
  PRIMARY KEY (`test_id`),
  UNIQUE INDEX `test_id_UNIQUE` (`poems_id` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COMMENT = 'test table';

MariaDBのドキュメントには確かにVISIBLEの記載がないですね。

原因

XAMPPのコントロールパネルにMySQLと表示されていたからてっきりmysqlを使ってるんだと思ってましたが、MariaDB使ってました…

# mysql --version
mysql  Ver 15.1 Distrib 10.1.38-MariaDB, for Win64 (AMD64)

以下のサイトにある通り、MariaDBのクライアントとしてMySQL Workbench使う場合はSQL編集したりする必要がありそうです。
ちゃんとMariaDBの構文把握しておかないと、自動生成された構文が正しいかどうかわからないですね。

MySQL Workbenchとは別のクライアントで使いやすいものがないか、探してみました。

TeamSQL。Amazon Redshift Management Studioになってて14日間フリートライアルなどとなってた。


…使うのやめよ。

ということでDBeaverを試してみました。

結局、DBeaverも脳死で作ろうとしたらうまくいかなかったのでMariaDBの構文をちゃんと勉強しようと思いました。
まぁそうですよね。

今後はとりあえずSQL Workbench使っていきます。
MariaDBには日本語のドキュメントがあって確認しやすいし、SQL Workbenchだと実行前にSQL修正てわきるしなにかと便利。
あと、mysqlのバージョンを指定する設定があるみたいだからそれ設定してみます。

2019/4/3 追伸
調べてみると、MariaDB 10.1はMySQLのバージョン5.6と5.7の機能を実装しており、
MySql Workbenchは対応していないようです。
替わりとなるツールがいかに紹介されています。

結局以下のブログでも紹介されているHeidiSQL使い始めました。
使い勝手なかなかいいです。

参考

2019年3月21日IT, 開発