iku8log

Webエンジニア、SEO、Web解析等々しております。タダのメモ。

MySQLでのサンプルDB「sakila」を使ってみるとエラー出た

最近、SQLものすごく大事だなと思って勉強しています。 SQL(主に参照系)を勉強したいので、勉強するにしてもテーブルとかデータとか考えて作るのは面倒。

そこで、いいサンプル無いかなと探していると、MySQLが提供している「sakila」というサンプルDBを発見しました! MySQL :: Other MySQL Documentation 「sakila database」があるので、zipとかでダウンロードしてください。

SQLでのimport手順は下記にあります。僕は面倒なので、MySQL WorkBenchでimportしました。 MySQL :: Sakila Sample Database :: 4 Installation

※現時点でimportするまでしかしてないです。

と、import作業を行っていると、テーブルが途中までしか入っていないのを発見。 いろいろ問題があったので調べてみました。

環境

CentOS7 5.5.52-MariaDB

問題点と改善策

sakira The used table type doesn't support FULLTEXT indexes

MySQL WorkBenchでimportした際に、このようなエラーメッセージが出てきました。 FULLTEXTとはインデックスのことのようです。特定の文字列を渡してあげると、マッチ度合いが高いものから抽出されるようです(メモ程度)。 MySQLで全文検索 - FULLTEXTインデックスの基礎知識|blog|たたみラボ

で、このFULLTEXTの何が問題かというと、「私のDBのバージョンではサポートされていませんでした」というのが結論です。 どうやらMariaDB5系では不可でした。

正確に言うと、データベースエンジンが問題だったようで。公式サイトによると

Full-text indexes can be used only with MyISAM and Aria tables, from MariaDB 10.0.5 with InnoDB tables and from MariaDB 10.0.15 with Mroonga tables

つまり、データベースエンジンのMySAMとAriaではMariaDB 10.0.5からサポート、InnoDBでは10.0.15からサポート(間違ってらコメント下さい) で、sakila.schema.sql(テーブル作るやつ)を見ると、FULLTEXTを使うテーブルにInnoDBと記述されていたので、MariaDB10.0.15以上が必要だとわかります。

CREATE TABLE film_text (
  film_id SMALLINT NOT NULL,
  title VARCHAR(255) NOT NULL,
  description TEXT,
  PRIMARY KEY  (film_id),
  FULLTEXT KEY idx_title_description (title,description)
)ENGINE=InnoDB DEFAULT CHARSET=utf8; --ここ!

MariaDBをアップデートして上げたら、問題なく全てのテーブルがimportされ、データもimportすることが出来ました。 以下でアップデート出来る。 https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university&distro=CentOS&distro_release=centos7-amd64–centos7&version=10.1

これから、sakilaのDBを使って、SQLを書く練習をしていきます。また、それもいつか共有しまっす!

コメント

SQLってホント大事。な気がすごくする。 データベースエンジンもまだちゃんと理解してない。 MySQLMariaDBの違いも微妙。

DBって奥が深いぜ。