【phpMyAdmin】エラー対処法:sqlファイルインポート時の「データベースが選択されていません」の原因と解決方法を画像で解説(MySQL・wordpress)

checking-page-on-laptop-with-glass Database
記事内に広告が含まれていることがあります。

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つあります。

  1. あらかじめデータベースを選択しておく
  2. USE宣言で使うデータベースを指定する
  3. 指定した名前でデータベースを作成する

どれの方法でも最終的な結果は同じで、指定したデータベースに対して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を作成する権限を付与する方法。対話モードへのログイン方法と権限の変更方法|データベースを作成する権限がありませんの対処法

タイトルとURLをコピーしました