ITPub博客

首页 > 数据库 > MySQL > MySQL数据库mysqlpump导出用户信息报错'std::logic_error'

MySQL数据库mysqlpump导出用户信息报错'std::logic_error'

原创 MySQL 作者:chenoracle 时间:2026-09-18 16:17:12 0 删除 编辑

问题现象:

使用 mysqlpump 导出用户时,报错如下:

[mysql@cjc-db-01 cjc]$ mysqlpump -uroot -p --set-gtid-purged=OFF --exclude-databases=% --users --exclude-users=root,mysql.session,mysql.sys,monitor,dumper,eisoo,repluser,dbatmp> /bak/cjc/master_mysql_bak_user_20260529.sql
terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid
Aborted

问题排查:

怀疑服务器上部署了多个不同版本的MySQL。

[root@cjc-db-01 ~]# which mysql
/usr/bin/mysql

默认使用的是 8.0.27

[root@cjc-db-01 ~]# mysql --version
mysql  Ver 8.0.27 for Linux on x86_64 (MySQL Community Server - GPL)
[root@cjc-db-01 ~]# rpm -qa|grep -i mysql
mysql-community-client-plugins-8.0.27-1.el7.x86_64
mysql-community-client-8.0.27-1.el7.x86_64
mysql-community-devel-8.0.27-1.el7.x86_64
mysql-community-embedded-compat-8.0.27-1.el7.x86_64
mysql-community-common-8.0.27-1.el7.x86_64
mysql-community-server-8.0.27-1.el7.x86_64

但实际正在运行的是二进制包安装的MySQL 8.0.32,不是默认 RPM包安装的MySQL 8.0.27。

问题原因:

使用 MySQL 8.0.27 的 mysqlpump 工具,备份 8.0.32 的用户数据,版本不兼容,报错:

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_S_construct null not valid
Aborted

解决方案:

导出时,指定 绝对路径,可以正常导出

/mysqldata/cjc/8.0.32/bin/mysqlpump -uroot -p --set-gtid-purged=OFF --exclude-databases=% --users --exclude-users=root,mysql.session,mysql.sys,monitor,dumper,eisoo,repluser,dbatmp> /bak/cjc/master_mysql_bak_user_20260529.sql

欢迎关注我的公众号《 IT小Chen》


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29785807/viewspace-3182992/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2719577