我在使用mysqldump和large--where=(id in…)时遇到了一个分段错误。
mysqldump --verbose --host=myhost --user=myuser -ppass mydb mytable --insert-ignore --no-create-info --where="id IN (6162591,5796486,5796495,6162586, ...)"
结果
-- Connecting to mydb...
-- MySQL dump 10.13 Distrib 5.5.60, for debian-linux-gnu (x86_64)
--
-- Host: myhost Database: mydb
-- ------------------------------------------------------
-- Server version 5.5.60-0+deb8u1-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 latin1 */;
/*!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 */;
-- Retrieving table structure for table flash_images...
-- Sending SELECT query...
--
-- Dumping data for table `mytable`
--
<!-- - WHERE: id IN (6162591,5796486,5796495,...,4 -->
Segmentation fault
我的名单上有732个身份证。400也失败了。与200一起工作。
我试过了 --skip-quick
强制内存缓冲区和 --skip-extended-insert
,它也失败了。
有人知道可能是什么错误吗?
谢谢您。
1条答案
按热度按时间xghobddn1#
在10.13版本中,它确实是一个mysqldump错误。
我编写了一个脚本,将id列表分成200个批次,这个解决方案可以工作。