データベースをダンプするために、mysql で次のコマンドを実行しています。
mysqldump --login-path=bc --single-transaction --routines my_database > /tmp/my_database
生成されるダンプ ファイルには、変数のみが含まれ、テーブル構造とデータは含まれません。
- MySQL dump 10.13 Distrib 5.6.49-89.0, for Linux (x86_64)
--
-- Host: my_host Database: my_database
-- ------------------------------------------------------
-- Server version 5.7.35-38-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 */;
--
-- Dumping routines for database 'my_database'
--
/*!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 2021-09-23 12:28:51
~
私の同僚は同じホストで同じコマンドを実行しますが、彼のダンプ ファイルは大幅に異なります。私のファイルと同じSET変数が含まれていますが、以下も含まれています。
--
-- Table structure for table `table_1`
--
DROP TABLE IF EXISTS `table_1`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `table_1` (
`autoinc` int(10) unsigned NOT NULL AUTO_INCREMENT,
`field1` varchar(30) NOT NULL,
`field2` varchar(40) NOT NULL,
... primary key stuff
... unique key stuff
... constraints
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `table_1`
--
LOCK TABLES `table_1` WRITE;
/*!40000 ALTER TABLE `table_1` DISABLE KEYS */;
/*!40000 ALTER TABLE `table_1` ENABLE KEYS */;
UNLOCK TABLES;
... etc
/etc/ にある my.cnf ファイルを読んでいましたが、そのファイルには同僚と何も違いはありません。同じ my.cnf ファイルを使用して、同じホストで同じコマンドを実行して、このように異なるダンプ ファイルを作成する方法について、私は非常に混乱しています。
何をすべきか、次に何を試すかについての指示は大歓迎です。これは私が得た限りです。my.cnf ファイル以外のものでしょうか? パーミッションベース?
mysql と統合する Perl の一連の単体テストを書き直す必要があるため、新しいコマンドを試したくありません。私の目標は、ダンプ ファイルが特に構造とデータを除外する原因を突き止めることです。