mysql在centos下用命令批量导入报错_Variable ‘character_set_client‘ can‘t be set to the value of ‘---linux工作笔记042

    Variable 'character_set_client' can't be set to the value of 'NULL'

如果你用mysql的命令,

    mysql -uroot -p

    输入密码,

然后 source  xxx.sql 进行导入数据,

或者通过直接:

mysql -uroot -p12345 ydy<ydyxxxx.sql

这样的方式导入数据.

如果出了上面的这个错误,

是因为:


/*!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 */;

--
-- 数据库: `WeiJu_1`
--

     去打开自己的.sql文件去看一下吧,里面如果有上面的这样的内容,可以找到删除掉,把这些注释删除掉再去导入就可以了.就不报上面的错了.

     这里要注意,导入数据,最好,就要用

<think>嗯,用户遇到了mysqlbinlog报错"unknownvariable'character-set-server=utf8'"的问题,这个问题在CentOS7环境下出现比较典型。之前已经给过解决方案,但用户这次遇到的错误信息稍有不同,从之前的"default-character-set=utf8"变成了"character-set-server=utf8",需要重新思考解决方法。用户应该是个数据库管理员或运维人员,正在处理MySQL二进制日志。从报错信息来看,ta可能已经按照之前的建议修改了配置文件,把default-character-set改成了character-set-server,但现在又遇到了新问题。这说明ta的环境可能比较特殊,或者是升级后的MySQL版本对参数要求更严格了。仔细分析引用资料发现:引用2明确指出mysqlbinlog无法识别binlog中的default-character-set配置引用4建议的两种解决方案都值得再验证:要么修改配置文件后重启,要么加--no-defaults参数但要注意用户现在的报错变成了character-set-server,这可能是因为:1.配置文件修改后没有重启MySQL2.配置位置错误,应该放在[mysqld]而非[client]3.MySQL版本升级后参数语法又有变化考虑到用户不能轻易重启生产环境数据库,最安全的方案是采用加参数的方式:mysqlbinlog--no-defaults--start-position=3162...不过需要警告用户这会忽略所有默认配置如果要彻底解决,需要指导用户:1.检查/etc/my.cnf2.确认character-set-server只在[mysqld]段出现3.确保没有在[client]等段重复设置4.重启MySQL服务另外想到一个深层次问题:MySQL8.0可能完全移除了某些参数支持,如果用户是从5.x升级来的,可能需要更详细的版本适配指导</think> 解决`mysqlbinlog`报错`unknown variable 'character-set-server=utf8'`错误的方法如下(CentOS7环境): ### 一、问题原因 新版本MySQL(5.5+)已将字符集配置参数更新为: - `character-set-server=utf8`(服务端参数) - `default-character-set=utf8`(客户端参数) 在配置文件中的错误位置声明这些参数会导致`mysqlbinlog`工具识别失败[^4]。 ### 二、解决方法 #### ▶ 方案1:添加`--no-defaults`参数(推荐) ```bash mysqlbinlog --no-defaults --start-position=3162 /usr/local/mysql/data/mysql-bin.000001 > output.sql ``` ✅ **优点**:无需重启MySQL,即时生效 ❗ **注意**: 1. 必须在其他参数前声明(如:`--no-defaults --start-position=...`) 2. 忽略所有配置文件中的设置[^2][^4] #### ▶ 方案2:修复配置文件(永久生效) 1. **编辑配置文件**: ```bash sudo vi /etc/my.cnf ``` 2. **修改参数位置**: - 服务端参数放在`[mysqld]`区块: ```ini [mysqld] character-set-server=utf8 collation-server=utf8_general_ci ``` - 客户端参数放在`[client]`区块: ```ini [client] default-character-set=utf8 ``` 3. **删除冲突参数**: 移除`[mysql]`、`[mysqldump]`等区块中的重复声明 4. **重启MySQL服务**: ```bash sudo systemctl restart mysqld ``` #### ▶ 方案3:使用现代参数格式(MySQL 8.0+) ```ini [mysqld] character_set_server=utf8mb4 # 推荐utf8mb4完全兼容 collation_server=utf8mb4_unicode_ci ``` ### 三、配置验证 检查当前字符集配置: ```sql SHOW VARIABLES LIKE 'character_set%'; SHOW VARIABLES LIKE 'collation%'; ``` 正常输出应包含: | Variable_name | Value | |---------------|-------| | `character_set_server` | `utf8mb4` | | `collation_server` | `utf8mb4_unicode_ci` | > **技术说明**:`mysqlbinlog`会读取配置文件中的全局声明,参数区块位置错误或过时语法会触发解析异常[^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

添柴程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值