mysqldumpコマンドは、mysqlコマンドで接続してると使えない?

ハマりました。

データベースのデータをコマンドでエクスポートとかする方法はないものかとネットでググっていたところ、mysqldumpコマンドでいけると。

mysqldumpコマンドは、mysqlコマンドでmysqlの中にいると使えない?

Msys2のbashからだと、『mysql -u 【ユーザー名】 -p』が使えず、『mysql.exe -u 【ユーザー名】 -p』になってしまうのは、置いといて、

f:id:ts0818:20170724184141j:plain

接続した状態で、ずっとmysqldumpコマンドやろうとしてたんですが、これ、mysqlの中では実行できないっていうね、当たり前のことかもしれんけど、自分のような初心者は知らないわけで、しかもネットでその辺については全く触れられてないのでね、いや~、盛大にハマりました。

⇩  mysqldumpについては下記サイトがまとまってます。

mysqldumpまとめ - Qiita

 

しかも、SQLエラーで、このへんがおかしいよ、という惜しいとこまできてるんだけどね~、的なニュアンスっぽさに見事にやられました。

f:id:ts0818:20170724184142j:plain

こんなときは、いったん、quit もしくは、exit でmysql接続を切断したあとで、『mysqldump -u 【ユーザー名】 -p -B 【データベース名】 > 【任意のファイル名】 Enter password: ****』

mysqldump -u root -p -B rpgdb > export.sql
Enter password: ****

f:id:ts0818:20170724184143j:plain

そうすると、今いるカレントディレクトリ内にexport.sqlが作られました。

f:id:ts0818:20170724184144j:plain

エクスプローラーで見ると、こんな感じ。 

f:id:ts0818:20170724184145j:plain

あらかじめ、cdコマンドなどでディレクトリを移動してからエクスポートしたほうが良さそうです。

一応、ファイルの中身をチェック。

-- MySQL dump 10.16  Distrib 10.1.10-MariaDB, for Win32 (AMD64)
--
-- Host: localhost    Database: rpgdb
-- ------------------------------------------------------
-- Server version	5.7.18-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `rpgdb`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `rpgdb` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `rpgdb`;

--
-- Table structure for table `hero`
--

DROP TABLE IF EXISTS `hero`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `hero` (
  `hero_id` int(11) NOT NULL AUTO_INCREMENT,
  `hero_name` varchar(50) DEFAULT NULL,
  `hero_hp` int(11) DEFAULT NULL,
  `hero_max_hp` int(11) DEFAULT NULL,
  `weapon_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`hero_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `hero`
--

LOCK TABLES `hero` WRITE;
/*!40000 ALTER TABLE `hero` DISABLE KEYS */;
INSERT INTO `hero` VALUES (1,'ミナト',100,100,1),(2,'センセイ',100,100,2);
/*!40000 ALTER TABLE `hero` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `matango`
--

DROP TABLE IF EXISTS `matango`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `matango` (
  `matango_id` int(11) NOT NULL AUTO_INCREMENT,
  `matango_suffix` char(5) DEFAULT NULL,
  `matango_hp` int(11) DEFAULT NULL,
  `matango_power` int(11) DEFAULT NULL,
  PRIMARY KEY (`matango_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `matango`
--

LOCK TABLES `matango` WRITE;
/*!40000 ALTER TABLE `matango` DISABLE KEYS */;
INSERT INTO `matango` VALUES (1,'A',20,10),(2,'B',20,10),(3,'C',40,20),(4,'D',40,20),(5,'Z',200,30),(6,'S',400,40);
/*!40000 ALTER TABLE `matango` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `wand`
--

DROP TABLE IF EXISTS `wand`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `wand` (
  `wand_id` int(11) NOT NULL AUTO_INCREMENT,
  `wand_name` varchar(50) DEFAULT NULL,
  `wand_power` int(11) DEFAULT NULL,
  PRIMARY KEY (`wand_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `wand`
--

LOCK TABLES `wand` WRITE;
/*!40000 ALTER TABLE `wand` DISABLE KEYS */;
INSERT INTO `wand` VALUES (1,'魔法の杖',50),(2,'大魔導士の杖',30);
/*!40000 ALTER TABLE `wand` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `weapon`
--

DROP TABLE IF EXISTS `weapon`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `weapon` (
  `weapon_id` int(11) NOT NULL AUTO_INCREMENT,
  `weapon_name` varchar(100) DEFAULT NULL,
  `weapon_power` int(11) DEFAULT NULL,
  PRIMARY KEY (`weapon_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `weapon`
--

LOCK TABLES `weapon` WRITE;
/*!40000 ALTER TABLE `weapon` DISABLE KEYS */;
INSERT INTO `weapon` VALUES (1,'炎の剣',20),(2,'光の剣',10);
/*!40000 ALTER TABLE `weapon` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `wizard`
--

DROP TABLE IF EXISTS `wizard`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `wizard` (
  `wizard_id` int(11) NOT NULL AUTO_INCREMENT,
  `wizard_name` varchar(50) DEFAULT NULL,
  `wizard_hp` int(11) DEFAULT NULL,
  `wizard_mp` int(11) DEFAULT NULL,
  `wand_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`wizard_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `wizard`
--

LOCK TABLES `wizard` WRITE;
/*!40000 ALTER TABLE `wizard` DISABLE KEYS */;
INSERT INTO `wizard` VALUES (1,'アサカ',100,50,1),(2,'ガンダルフ',100,100,2);
/*!40000 ALTER TABLE `wizard` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2017-07-24 22:29:32

このsqlファイルをインポートすれば、rpgdbデータベースとその中のテーブルなども構築できそうな気がします。

インポートは、

mysql -u[ユーザー名] -p[パスワード] [インポートするデータベース名] < [インポートするファイル名]

MySQLのデータインポート・エクスポート - Qiita

mysqlコマンドでいけるみたいですね。

Msys2のbash、mysqldumpコマンドは、mysqldump.exeでなくてもいけるという...謎は深まるばかりですね。