phpMyAdminを使ってMySQLのデータベースを移管するときに、SQLファイルをインポートすると「データベースが選択されていません」というエラーメッセージが表示されることがある。
この、原因と対処法をわかりやすく解説します。
エラーの内容と原因
.sqlという拡張子のファイルをインストールすると、そのファイルの中に記述してあるSQLクエリを実行する処理が走ります。
表示されたエラーを見ると、以下の行までが正常に読み込まれて、その次の処理でエラーが発生したことがわかります。
--
-- データベース: `XXXX(DB)名`
--
-- --------------------------------------------------------
発生したエラーの内容は「データベースが選択されていません」なので、実行しようとしたSQLクエリはデータベースを必要とするが、それが作成 または 選択されてなかったことが原因です。
例として、実際にこの行の下のSQLクエリを見てみると、actionscheduler_actionsというテーブルを作成しようとしていることがわかります。
CREATE TABLE IF NOT EXISTS `actionscheduler_actions` (
sqlファイルのコメントアウト
表示されたエラーの中に「–」で始まる文章がありますが、これはコメントアウトなので処理とは関係ありません。
SQLのコメントアウトには、「–」と「/* */」があります。
- 「–」はその後ろに続く1行文をコメントアウトとします(コマンドの後ろに記述できます)
- 「/* */」は囲んだ範囲をコメントアウトします(コマンドの途中でも記述できます)
-- PHP のバージョン: 5.3.3
SET time_zone = "+00:00"; --Time Zoneの設定
/*!40101 SET NAMES utf8 */;
CREATE TABLE /*存在確認*/ IF NOT EXISTS `test-table` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`action_id`)
);
エラー対処法
エラーの対処法は3つあります。
- あらかじめデータベースを選択しておく
- USE宣言で使うデータベースを指定する
- 指定した名前でデータベースを作成する
どれの方法でも最終的な結果は同じで、指定したデータベースに対してsqlが実行されます。
あらかじめデータベースを選択しておく
インポート処理を行うまえに、phpMyAdminの左カラムで、対象のデータベースを選択しておきます。グレーの選択状態になっていればOKです。あとは、「インポート」タブでファイルを選択します。
データベースが正しく選択されている場合は、上部に「データベース “選択したDB名” へのインポート」と表示されます。
「実行」をクリックすれば、エラーが発生することなく処理が完了します。
USE宣言で使うデータベースを指定する
エラーの処理が発生した箇所よりも上で、データベースを指定するUSE文を使います。インポートしようとしているsqlファイルをエディタで開いて、以下を追記します。
「USE データベース名;」
※phpMyAdminの中に指定したデータベースが存在していること。
追記する場所は、エラーメッセージで表示された、部分に挿入します。こうすることで、エラーが発生したSQLクエリの前に、使用するデータベースに移動することができます。
例えば、以下のようになります。
--
-- データベース: `XXXX(DB)名`
--
USE wp_db;
-- --------------------------------------------------------
--
-- テーブルの構造 `actionscheduler_actions`
--
CREATE TABLE IF NOT EXISTS `actionscheduler_actions` (
新たにデータベースを作成する
SQLクエリで新しいデータベースを作成することもできます。
USE宣言の記述と同様に、エラーの処理が発生した箇所よりも上で、データベースを生成するCREATE DATABASE文とUSE文を使います。
インポートしようとしているsqlファイルをエディタで開いて、以下を追記します。
CREATE DATABASE データベース名;
USE データベース名;
※phpMyAdminの中に指定したデータベースが存在していないこと。
追記する場所は、エラーメッセージで表示された、部分に挿入します。こうすることで、エラーが発生したSQLクエリの前に、使用するデータベースに移動することができます。
例えば、以下のようになります。
--
-- データベース: `XXXX(DB)名`
--
CREATE DATABASE DB名;
USE DB名;
-- --------------------------------------------------------
--
-- テーブルの構造 `actionscheduler_actions`
--
CREATE TABLE IF NOT EXISTS `actionscheduler_actions` (
SQLの修正が完了したら、「インポート」タブをクリックし、ファイルを選択して「実行」を押せば完了です。
「データベースを作成する権限がありません」と表示されている場合
データベースの作成でエラーが発生した場合、現在ログインしているユーザーの権限ではデータベースを作成できない可能性があります。
その場合、「データベース」のタブに以下のような警告が表示されています。
これを修正するためには、ログインユーザーにデータベースを操作する権限を付与する必要があります。対処法は以下ページをご参照ください。
【MySQL】DBを作成する権限を付与する方法。対話モードへのログイン方法と権限の変更方法|データベースを作成する権限がありませんの対処法