记录一些旧版本 MySQL 的问题与处理
旧版本相关资源下载:https://downloads.mysql.com/archives/
(以下版本号均为实测版本号,不代表同大版本下的其它小版本行为也会一致)
1、MySQL 5.1.46 版本
- 使用命令或服务运行数据库时,不需要也不支持通过参数初始化数据库(下载的压缩包内已有初始数据)
- 默认的 root 用户密码为空,所有需要密码的地方,不输入或留空即可(错误:Authentication to host '127.0.0.1' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES))
- 在 .NET 程序中,实测最新的 MySql.Data 9.1.0 插件也是可以正常连接的
- 示例连接字符串:Server=127.0.0.1;Port=3307;Database=test;UserID=root;Password=;
2、MySQL 5.7.10 版本
- 从 5.7.X 某个版本后不再自带 my.ini 模板文件,实测 5.7.10 还有,到 5.7.22 就没有了。
- 在使用 MySql.Data 6.9.12 版本插件连接数据库时可能遇到错误,需要禁用 SSL,见下方示例(错误:System.Security.Authentication.AuthenticationException: 调用 SSPI 失败,请参见内部异常。 ---> System.ComponentModel.Win32Exception: 无法连接到本地安全机构)
- 示例连接字符串:Server=127.0.0.1;Port=3307;Database=test;UserID=root;Password=root;SslMode=none;
3、如何恢复数据表
在有完整的 *.frm、*.MYD、*.MYI 三个表文件情况下,建立新的数据库,将表文件放在新的数据库文件夹下即可。
放好后数据库会自动读取到。
查询 MySQL 版本:.\mysqld --version
如果恢复后的表,在查询时出现乱码,并且尝试了网上的各种方案后,怎样也改不回正常显示的话,可以尝试从程序中直接读取,再进行转换
比如一般表恢复后默认是 Latin1 编码,但实际内容是在 GBK/GB2312 编码下,尝试了网上各种办法,似乎没有办法能够直接通过 MySQL 进行转换处理
后来尝试发现,可以从程序中读取,并进行编码转换,可以恢复正常
在 .net 中实现:
Encoding.GetEncoding("gb2312").GetString(Encoding.GetEncoding("iso-8859-1").GetBytes(name)
需要注意,如果是在 .net 8 中,还需要引用 System.Text.Encoding.CodePages 包,否则会找不到相关的字符编码。
参考:
https://blog.csdn.net/weixin_41749529/article/details/103353671
https://www.cnblogs.com/sun8134/p/11423388.html
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2016-11-18 .NET 程序在 Windows XP 下调用 SHA512CryptoServiceProvider 方法报 PlatformNotSupportedException 异常