答案 0 :(得分:0)
可能是某个字段的字符集已被设置为无效值,在服务器上运行此SQL并且问题替换表名称,“Collation”列将显示每个varchar / char字段的字符集
SHOW FULL COLUMNS IN table_name;
然后,您可以使用以下内容更改字段的字符集:
ALTER TABLE t MODIFY col1 VARCHAR(50) CHARACTER SET latin1;
答案 1 :(得分:0)
在内部,MySQL 正在映射跨列的索引。通常这是使用表示列索引的整数来完成的。大多数索引实际上是一个构建后的复合索引 (col 1 + col 3),形成类似 field 13
的内容。
在堆栈不是精确副本的情况下将数据从开发迁移到生产时可能会发生这种情况。
正如 3urdoch 提到的,您可以使用内部 MySQL 函数提取字符集;然后将表的字符集更改为兼容的编码。
或者(我敢打赌这个问题的来源)您可以检查 Production
的加载驱动程序是否与 Other
服务器的加载驱动程序匹配。 如果 Development
/Other
服务器仍在用于测试并迁移到 Production
,这将防止再次发生问题。