0

我在 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

我正在阅读 my.cnf 文件,我在 /etc/ 中确实有该文件,但该文件中的任何内容都与我的同事不同。我对我们如何拥有如此不同的转储文件感到非常困惑——在同一主机上使用相同的 my.cnf 文件运行相同的命令。

任何关于下一步做什么/尝试的方向都值得赞赏。这是我所得到的。它可能不是 my.cnf 文件吗?基于权限?

我不想尝试新命令,因为这需要在与 mysql 集成的 Perl 中重新编写一堆单元测试。我的目标是找出是什么导致我的转储文件专门遗漏了结构和数据。

4

0 回答 0