当前位置:   article > 正文

mysql 修改 character_set_database_Mysql5.7.22 坑爹的 `character_set_database`

mysql5.7 ef codefirst 无法修改数据库

Mysql5.7.22 坑爹的 character_set_database

Intro

今天用 EF Core Code First 生成数据库的时候,在初始化数据库的时候一直报错,后来debug的时候发现只要保存中文字符就会包异常,检查生成的数据库的编码竟然是 latin。MySqlException: Incorrect string value: '\xE8\x81\x94\xE7\xB3\xBB...' for column 'TypeName' at row 1

MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in ResultSet.cs, line 42

MySqlException: Incorrect string value: '\xE8\x81\x94\xE7\xB3\xBB...' for column 'TypeName' at row 1

MySql.Data.MySqlClient.MySqlDataReader.ActivateResultSet(ResultSet resultSet) in MySqlDataReader.cs, line 80

DbUpdateException: An error occurred while updating the entries. See the inner exception for details.

Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.Execute(IRelationalConnection connection)

MySqlException: Incorrect string value: '\xE8\x81\x94\xE7\xB3\xBB...' for column 'TypeName' at row 1

MySqlConnector.Core.ResultSet.ReadResultSetHeaderAsync(IOBehavior ioBehavior) in ResultSet.cs

尝试更新MySql的默认编码,服务器上装的是 MySql 5.7,在网上找了许多方法都不奏效。

升级 8.0

尝试了各种办法 5.7.22 版本的mysql 无法更新 character_set_database,一直是 latin,从而导致每次新建数据的时候没有指定 charset 版本的时候都会以默认 lanti 编码,导致后面的数据保存到数据库的时候就会直接报错,。

经过查阅官网文档,可以看到 character_set_database 已经不再使用了,后面的版本就废弃了,到8.0就不需要这个了,如果没有指定charset,会使用 character-set-server=utf8mb4 的charset

最终决定升级 MySql 8.0,按照 StackOverflow 这篇文章 的介绍进行了升级。

升级之后重新设置 charset,character_set_database 终于正常了,终于不再是 latin 了,要注意的一个地方,mysql的utf8不是真正的utf8,是一个伪UTF8,utf8mb4才是真正的utf8,这里直接设置默认编码为 utf8mb4,设置完之后重启一下MySQL服务,sudo service mysql restart

再看 char set 信息

AAffA0nNPuCLAAAAAElFTkSuQmCC

charsets

升级完成之后再连接 mysql 服务器会报错,错误信息如下:

ERROR 1449 (HY000): The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

解决方法:

在命令行中执行以下命令:mysql_upgrade -u root -p

输入密码后,更新迁移完成,终于一切搞定了。

此时再连接数据,保存中文就再没有什么问题了。

作者:天天向上卡索

链接:https://www.jianshu.com/p/65c526cd7572

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/716133
推荐阅读
相关标签
  

闽ICP备14008679号