买了腾讯云的轻量数据库,便宜(其实现在和直接买1c1g的数据库也差不多了)。在做数据迁移的时候直接用了navicat的data transfer(这功能真方便)
因为数据库不大,只有2~300M,用datatransfer走起来非常快。基本上3分钟左右 就搞定了。如果我dump sql,再upload & import sql,反而比这个速度还要慢一点。
然后问题就来了,查询的时候,全是乱码,这个很明显,是latin1的问题了,于是上数据库 执行了一下:SHOW SESSION VARIABLES LIKE 'character\_set\_%';果然
character_set_client latin1
character_set_client_handshake ON
character_set_connection latin1
character_set_database utf8mb4
character_set_filesystem binary
character_set_results latin1
character_set_server utf8mb4
character_set_system utf8
character_set_client_handshake ON
character_set_connection latin1
character_set_database utf8mb4
character_set_filesystem binary
character_set_results latin1
character_set_server utf8mb4
character_set_system utf8
这个就纠结了,即使我set names utf8mb4,用datatransfer也是这个问题。
我导数据过来的那一台,也是轻量级数据库,理论上不应该会有这个问题,于是我看一下connection的相关信息。发现正常的那台,encoding居然选的是auto,而这台不正常的选择的是utf-8,难道是因为这个原因?于是切回auto重连。
再次运行SHOW SESSION VARIABLES LIKE 'character\_set\_%';果然 character_set_client 已经恢复成utf8mb4了。
这个问题也真是妖~