CREATE DATABASE IF NOT EXISTS ~ データベースをインポートしたらエラー

  • 更新日:
  • 公開日:

WordPressを移行するためデータベースをphpMyAdminでエクスポートし、移行先(ロリポップのロリポプラン)のphpMyAdminでインポートした時の話。

インポートしたら以下のSQL文エラーが発生しました。

CREATE DATABASE IF NOT EXISTS `データベース名` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

エラーの解決方法

解決方法は簡単。

  1. エクスポートしたSQLファイルをメモ帳などのエディタで開く
  2. CREATE DATABASE IF NOT EXISTSで始まる1行を削除
  3. その下にUSE ‘データベース名’とあったらソレも削除

です。この修正をSQLファイルにしたら、保存してもう一度phpMyAdminでインポートしてみましょう。上記のエラーは解決されているハズです。

ちなみにSQLファイルとはphpMyAdminでエクスポートした、「ファイル名.sql」と拡張子がsqlになっているファイルです。

ドット(.)から始まる拡張子が見えない場合は以下のページを参考に拡張子を表示して下さい。(Windows、Mac両方載せておきます)

どうしてエラーが起きたの?

このエラー原因のSQL文「CREATE DATABASE IF NOT EXISTS」の意味は、「データベースを作成するよ。でも既に○○○(データベース名)があったらデータベースは作成しないよ」です。

本来なら問題無いSQL文なのですが、ロリポップのロリポプランでは不要になります。

何故かというと、ロリポプランではデータベースが1つしか使えないので、既にデータベースがある場合CREATE DATABASEでそれ以上作成出来ません。

今回私はローカルにあるデータベースからサーバー上のデータベースにインポートしようとしたワケなのですが、ローカルにあるデータベース名とサーバー上のデータベース名が異なっていたんですね。

結果、CREATE DATABASEのオプションであるIF NOT EXISTSは「あ、このデータベース名は無いね、作成しておくわ」と判断し、しかしロリポプランはデータベースが1つしか使えない設定になっている為エラーが起きた、という顛末です。

これらが理由で新しいデータベースが作成されることはありません。セットで付いてるUSE `データベース名`も要らないので削除しておきます。(このUSEは指定したデータベースに接続する命令文です)

ロリポップのロリポプラン以外にも、同じくデータベースが1つしか使えないサーバーでは同様のエラーが起きるのではないかと予想します。


ロリポップはチカッパプランにするとデータベースが30個まで使えるようになりますが、私はロリポップからXサーバーに乗り換えました。

価格ではロリポップの方が安いのですが、高機能・安定性で言えばXサーバーに軍配が上がります。

そしてなにより、運営側が7日間分のデータを自動でバックアップしています。最悪「データが消えた&自分でバックアップを取っていなかった」場合に申し込みをすると、データの提供をして貰える仕組みがあるので安心出来ますよ(手数料はかかります)。オススメです。

photo credit: ditatompel via photopincc

書いた人

Symbol Mark

Ryoichi(しつ)

除菌ティッシュを買い込んで使いきれずによく乾かす人。

療養目的で退職し、どうやって生きていくか模索中。最近は勉強目的でLaravelやVue.js弄ったり、趣味で音で遊んでます。

※2019年10月16日現在ブログリニューアル中です。崩れなどが発生していたらすみません。

うぇぶ: @s_ryone