亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Mysql5.7.22 坑爹的 `character_set_database`

標簽:
Java

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 信息

webp

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


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
205
獲贊與收藏
1011

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消