数据库编码 问题 mysql 修改字符集为utf8mb4

2023-11-06

数据库编码 问题
mysql 修改字符集为utf8mb4
问题 ;
当向数据库插入表,或者在表中插入数据时,出现

ERROR 1366 (HY000): Incorrect string value: ‘\xBD\xF0\xD3\xB9’ for
column ‘name’ at row 1

原因 数据库编码方式 和 表编码方式 以及 插入数据(字符串)的编码方式不同

我们可以查看建表,建数据库语句,查看他们的编码

show create database database_name
show create table table_name

也可以使用 show full columns from emp 查看表的最详尽信息

在windows下mysql建表是默认是采用latin字符集
错误解决方式

将数据库和表的编码换成 utf8mb4 插入表的语句在记事本里另存为 utf8 编码

修改database默认的字符集

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE =
utf8mb4_unicode_ci

虽然修改了database的字符集为utf8mb4,但是实际只是修改了database新创建的表,默认使用utf8mb4,原来已经存在的表,字符集并没有跟着改变,需要手动为每张表设置字符集
修改table的字符集

只修改表默认的字符集
ALTER TABLE table_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

修改表默认的字符集和所有字符列的字符集
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

单独修改column默认的字符集 ALTER TABLE table_name CHANGE column_name column_name
VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

注意内容
检查字段的最大长度和索引列

字段长度
由于从utf8升级到了utf8mb4,一个字符所占用的空间也由3个字节增长到4个字节,但是我们当初创建表时,
设置的字段类型以及最大的长度没有改变。例如,你在utf8下设置某一字段的类型为TINYTEXT, 这中字段类型
最大可以容纳255字节,三个字节一个字符的情况下可以容纳85个字符,四个字节一个字符的情况下只能容纳63
个字符,如果原表中的这个字段的值有一个或多个超过了63个字符,那么转换成utf8mb4字符编码时将转换失
败,你必须先将TINYTEXT更改为TEXT等更高容量的类型之后才能继续转换字符编码
索引
在InnoDB引擎中,最大的索引长度为767字节,三个字节一个字符的情况下,索引列的字符长度最大可以达到
255,四个字节一个字符的情况下,索引的字符长度最大只能到191。如果你已经存在的表中的索引列的类型为
VARCHAR(255)那么转换utf8mb4时同样会转换失败。你需要先将VARCHAR(255)更改为VARCHAR(191)才能继续
转换字符编码

修改配置文件

SET NAMES utf8 COLLATE utf8_unicode_ci becomes SET NAMES utf8mb4
COLLATE utf8mb4_unicode_ci

vim /etc/my.cnf

对本地的mysql客户端的配置

[client] default-character-set = utf8mb4

对其他远程连接的mysql客户端的配置

[mysql] default-character-set = utf8mb4

本地mysql服务的配置

[mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci
service mysqld restart

检查修改

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name            | Value              |
+--------------------------+--------------------+
| character_set_client     | utf8mb4            |
| character_set_connection | utf8mb4            |
| character_set_database   | utf8mb4            |
| character_set_filesystem | binary             |
| character_set_results    | utf8mb4            |
| character_set_server     | utf8mb4            |
| character_set_system     | utf8               |
| collation_connection     | utf8mb4_unicode_ci |
| collation_database       | utf8mb4_unicode_ci |
| collation_server         | utf8mb4_unicode_ci |
+--------------------------+--------------------+
10 rows in set (0.00 sec)

修复&优化所有数据表

mysqlcheck -u root -p --auto-repair --optimize --all-databases

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库编码 问题 mysql 修改字符集为utf8mb4 的相关文章

  • 将歌词存储在 MySQL 数据库中

    我想知道在 mysql 数据库中存储音乐 歌词 的最佳方式是什么 以及用于此目的的设置是什么 另外 我想要表格来存储断线 我正在考虑使用 指示新行并使用 php 替换字符串 我不知道从哪里开始 或者使用什么参数 varchar int 我知
  • SQL 查询中的可选参数在检查 NULL 时非常慢

    我有许多已连接的表 最大行数约为 400 万条记录 我们正在存储过程中搜索该表 并且有一个默认值为 NULL 的可选参数 下面是我们正在运行的编辑示例 连接涉及更多表 但只有 1 个字段具有 WHERE 子句 DECLARE OwnerId
  • 在评论中查找不同风格的日期

    我还有一个问题要问preg match 我有一个表 其中评论的日期写在评论本身内 手动 现在我需要提取该日期并将其放置在不同的列中 我发现评论和日期的样式如下 id warning sent warning date 6109 2011 0
  • SQL最近的命令?微软SQL

    我只是编写一个查询来查看我的客户数据库并列出他们下了多少订单等 我正在努力添加到此查询中的是只显示该电子邮件的最新 OrderID 有任何想法吗 这是我的查询 select top 1000 BuyerEMail COUNT HowMany
  • 白标协作开源开发(例如 github/sourceforge/google-code)? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人推荐开源或付费 打包或 SaaS 解决方案 用于将协作开发功能集成到您自己的网站中吗 以下是更多详
  • 有没有适用于 Eclipse 的 SQL 格式化插件?

    我在网上没有找到任何标准的开源 sql 格式化程序 eclipse 插件 我正在使用日食太阳神 我可以找到编辑 gt 格式化SQL但这似乎不起作用 找到一个在http ventralnet blogspot in 2010 11 sql b
  • 是否有任何 git merge-strategies 可以忽略提交上的子模块更新或分支合并到目标分支?

    我的用例是 我有一个包含子模块的存储库的两个分支 我想设置这两个分支的自动集成 但是 只要两个分支上都有子模块更新 我的自动集成脚本就会因子模块冲突而失败 有没有办法让 git 在合并过程中忽略子模块指针的变化 或者提供类似的东西merge
  • 如何在 Jenkins 控制台输出中隐藏 checkout scm 步骤输出

    我在 Jenkinsfile 脚本化管道 中的第一个阶段是 checkout scm 它简要描述了 GitHub checkouts 和所有修订相关的内容我不想在 Jenkins 控制台输出中显示 是否可以将其隐藏在 Jenkins 的控制
  • 关于mysql建表的几个问题

    CREATE TABLE favorite food person id SMALLINT UNSIGNED food VARCHAR 20 CONSTRAINT pk favorite food PRIMARY KEY person id
  • 获取直方图数据

    有没有办法在 MySQL 中指定 bin 大小 现在 我正在尝试以下 SQL 查询 select total count total from faults GROUP BY total 生成的数据足够好 但行太多 我需要的是一种将数据分组
  • 如何每行输出 7 条记录,一周中的每一天输出 1 条记录?

    试图在这里节省大量的数据输入 我目前有以下输出 CONTID DESCR 001 Area 1 001 Area 2 001 Area 3 我想要做的是为每个 DESCR 区域 输出 7 条记录 一周中的每一天输出 1 条记录 相应地为 0
  • 从 MySQL 返回结果时的数字顺序

    我的数据库表中有以下类型的标题 Topic 1 blah blah Topic 2 blah blah Topic 3 blah blah Topic 10 blah blah Topic 11 blah blah etc 选择查询将始终返
  • 为什么使用参数化查询将数据插入表比将值附加到查询字符串更快?

    为什么使用参数化查询向表中插入数据 string queryString insert into product id name values id name 比将值附加到查询字符串更快 string queryString insert
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • Rails 5.2.2(活动记录)WITH 语句

    我正在使用 Rails 5 2 2 并且有一个使用 WITH 语句的复杂查询 我需要使用左外连接创建该语句 我该如何做WITH活动记录中的语句 我的 TOTAL PROFILES 由查询对象驱动 并且会发生变化 而其余部分将始终保持不变 所
  • SQL:删除SQL Server中的重复记录

    我有一个 sql server 数据库 我预先加载了大量数据行 不幸的是 数据库中没有主键 并且表中现在存在重复信息 我不担心没有主键 但我担心数据库中有重复项 有什么想法吗 原谅我是一个sql server新手 嗯 这就是表上应该有主键的
  • 获取每月第二个星期二的日期

    有没有办法使用 T SQL 语法找出每月第二个星期二的日期 例如 三月是十二号 四月是九号 您可以通过此方法查找 2013 年所有 第二个星期二 select dateadd day 8 datediff day 1 dateadd mon
  • 使用 Athena 从 AWS WAF 日志中的规则组列表获取终止规则

    我跟着这些说明 https docs aws amazon com athena latest ug waf logs html将我的 AWS WAF 数据放入 Athena 表中 我想查询数据以查找具有 BLOCK 操作的最新请求 此查询
  • 将 SQL 变量传递给 ASP

    这里只是有点语法问题 我正在使用 SQL 和 ASP 并且到目前为止有以下代码 set rs Server CreateObject ADODB recordset rs Open Select from Questions conn sq
  • MySql 西班牙语字符数据

    我有一个包含西班牙语字符的数据库 为了填充数据库 我从字符编码 UTF 8 的客户端页面获取值 当我在 mySql 数据库中插入值时 行包含更改的数据 例如 如果我插入 M xico 数据库中的条目是 M xico 其影响是当我对指定 M

随机推荐

  • parser = argparse.ArgumentParser()解析

    argument模块主要用于用户编写命令行接口 程序定义它需要的参数 然后argument从sys argv中解析参数 一 使用流程 1创建解析器 parser argparse ArgumentParser 2参数设置 parser ad
  • 景联文科技数据标注:人体关键点标注用途及各点的位置定义

    人体关键点标注是一种计算机视觉任务 指通过人工的方式 在指定位置标注上关键点 例如人脸特征点 人体骨骼连接点等 常用来训练面部识别模型以及统计模型 这些关键点可以表示图像的各个方面 例如角 边或特定特征 在面部识别中 它们可以标注眼睛 鼻子
  • Matlab批量读取文件夹内的txt文件并按名称创建变量

    Path D 新建文件夹 设置数据存放的文件夹路径 cd Path 把当前工作目录切换到指定文件夹 File dir fullfile Path txt 显示文件夹下所有符合后缀名为 txt文件的完整信息 FileNames File na
  • dubbo分布式服务化框架的使用遇到的坑

    原文地址 https blog csdn net zollty article details 53958493 dubbo常见问题汇总 https blog csdn net tanga842428 article details 522
  • redis不断异常自动重启问题

    问题一 宕机重启后 业务部署日志报错无法访问redis 一 问题描述 首先查看redis状态 发现状态正常 本地尝试连接 watch命令每个2秒看redis状态 发现每隔20s左右 redis会自动重启 1 第一次查看redis状态 roo
  • imsi和手机号码的关系

    国际移动用户识别码 IMSI International Mobile Subscriber Identification Number 是区别移动用户的标志 储存在SIM卡中 可用于区别移动用户的有效信息 其总长度不超过15位 同样使用0
  • Python股票量化学习(4)——一个省心的交易策略

    股海无常 难达彼岸 像我们大多数散户 看个财务报表也看不懂 学个技术分析也学不精 更要命的是 明明知道自己不懂还不肯下功夫去学习 盯着个K线就在那里YY 嗯 这个样子感觉要涨 仿佛再不上车就来不及了 于是乎 买 买 买 可结果往往是买了就跌
  • stm32中的系统滴答定时器使用

    系统滴答定时器对于stm32的初学者来说还是非常重要的 因为随着你学习的深入编程过程中肯定会调用延时函数 比如我之前的一些gpio相关的实验中 那么延时函数的编写也是几种方法的 一般开始接触都是让系统循环等待 利用stm32处理程序所用的机
  • 【Go语言教程】(一) 下载、安装、配置

    1 下载 官网安装包下载地址为 https golang org dl 如果打不开可以使用这个地址 https golang google cn dl 找到适合你系统的版本下载 我下载的是windows版本 2 安装 msi文件点击完成安装
  • 基于51单片机直流电机PWM调速设计

    具体实现功能 系统由STC89C52单片机 LCD1602液晶显示屏 霍尔测速传感器 3V直流电机 按键模块构成 具体功能 1 采用霍尔传感器非接触式测电机转速 2 LCD1602液晶显示当前的转速 单位为转 分 RPM 和当前的PWM占空
  • 尝试导出Cities Skyline完整城市模型遇到的问题与解决

    城市天际线是我最喜欢的游戏之一 可以搭建自己的城市 那我很显然一个想法就是把游戏里面的完整城市导出 并且加入到自己喜欢的游戏里面 比如自己搭建一个城市玩赛车游戏 或者在自己的城市里面玩吃鸡游戏 肯定非常爽 然后我开始查找解决方案 首先肯定想
  • 对话泛微:产业数字化时代,我们需要怎样的OA?

    在泛微诞生以后的十年 恰是OA系统的大规模突破 十年间 上百家OA企业的诞生直接将市场推向了鼎盛期 而后又迎来了移动互联网风口 在互联网厂商的冲击之下 传统OA在不断进击的同时 还要进行自我蜕变 成为 新时代OA 作者 思杭 编辑 皮爷 出
  • python中输出到txt文档,python 将print输出的内容保存到txt文件中

    具体代码如下所示 import sys import os class Logger object def init self filename Default log self terminal sys stdout self log o
  • Java语言程序设计(一)计算题

    1 观察下面的程序片断 指出其中的父类和子类 以及父类和子类的各个域和方 法 class SuperClass int data voidsetData intnewData data newData intgetData return d
  • 双目测量原理详解

    双目测距公式解析 看双目测距的时候一个公式就给难住了 网上各种解析很多更是弄得云山雾绕 写下自己的一点理解 自认为非常合理 就是这个公式 点P在成像平面上的两个点Pl Pr的坐标分别是 所谓视差 就是指左右图像上的相同特征点在x坐标上的差值
  • Mac常用的五款思维导图软件,中文版推荐

    第一款 最强思维导图软件 XMind 2021 v11 1 0 for Mac XMind 是Mac创建思维导图的最热门软件 拥有大量的用户群体 长期保持着高下载量的软件 当您考虑您的想法或就某个特定主题的头脑风暴分组时 您偶尔会想到想法
  • 实现用户操作日志记录

    Java记录操作日志 java自带的日志框架是java util logging JUL 从JDK1 4 2002 开始捆绑在JDK中 可以使用JUL来记录操作日志 以下是使用JUL记录事务的示例 java util logging jav
  • 使用Tensorflow的RNN(LSTM)生成音乐(基础)

    跟着Tensorflow的官方教程 搭建一个简单的LSTM模型 生成midi格式的音乐 只是为了熟悉tensorflow机器学习的代码一般格式 在音乐生成的模型上有很多不合理的操作 所以结果也不太好 安装 用的目前最新版Tensorflow
  • SQLServer附加数据库5120错误

    https www cnblogs com yangxiaofei p 5123816 html 装有MSSQL的电脑 需要附加的数据库文件 mdf 及其日志文件 ldf 1 打开SQL Server Management Studio 并
  • 数据库编码 问题 mysql 修改字符集为utf8mb4

    数据库编码 问题 mysql 修改字符集为utf8mb4 问题 当向数据库插入表 或者在表中插入数据时 出现 ERROR 1366 HY000 Incorrect string value xBD xF0 xD3 xB9 for colum