好的,所以我上午尝试更改XAMPP设置的默认排序规则。
问题在于:我在视图中使用Format(),将double转换为字符串
{{1}}
当我查看返回的列时,它显示为utf8mb4_general_ci。 我在my.ini和phpMyAdmin的config.inc.php中尝试了各种设置 无济于事。
作为最后的手段,我准备将collation参数添加到view。
我很感激任何测试的解决方案
答案 0 :(得分:1)
好的 - 我会为其他在此登陆的人发布自己的答案: (我在其他地方见过这个,但是没有时间相信它,因为没有解释)。
当SQL Format()将数字转换为字符串时,它使用变量 character_set_results 。 PMA的变量标签显示为" utf8"但是在下面的一行上,它说(会话值)= utf8mb4 所以我知道PMA覆盖了服务器默认值。 我真正的问题是我无法通过使用[mysqld] skip-character-set-client-handshake设置或编辑php.config.inc文件来找到更改此覆盖的方法。 今天我有一个突破..我确定如果我使用相同的PMA连接到较旧的MySQL服务器,问题没有发生。 这表明PMA在新的(有能力的)服务器上强制使用utf8mb4,而不是旧服务器。 我对phpmyadmin进行了文本搜索,找到字符串' mb4'并在类中找到以下代码: phpMyAdmin / libraries / DatabaseInterface.class.php
// Skip charsets for Drizzle
if (!PMA_DRIZZLE) {
if (PMA_MYSQL_INT_VERSION > 50503) {
$default_charset = 'utf8mb4';
$default_collation = 'utf8mb4_general_ci';
} else {
$default_charset = 'utf8';
$default_collation = 'utf8_general_ci';
}
PMA_MYSQL_INT_VERSION> 50503 似乎符合我关于较旧的mysql版本的理论,所以我已经备份了该文件,并在此编辑了用 utf8 替换 utf8mb4 的类功能。 phpMyAdmin现在在其变量选项卡中显示我想要的内容,而Format()函数现在返回我期望的内容。
答案 1 :(得分:0)
(如果没有失败的测试用例,我不会给你一个经过测试的解决方案。)
这是一个可能的解释:
mysql> SELECT FORMAT(2e7, 0);
+----------------+
| FORMAT(2e7, 0) |
+----------------+
| 20,000,000 |
+----------------+
但您使用的是“区域设置”,其中“千位分隔符”为.
,而不是,
。
该解决方案与COLLATION
无关。相反,请查看FORMAT()
的参数。
mysql> SELECT FORMAT(2e7, 0, 'de_DE');
+-------------------------+
| FORMAT(2e7, 0, 'de_DE') |
+-------------------------+
| 20.000.000 |
+-------------------------+
我猜测MS Access和MySQL假设不同的“Locales”,因此绊倒了数千个分隔符,可能还有其他差异。
区域设置参考:
http://dev.mysql.com/doc/refman/5.7/en/locale-support.html
http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lc_time_names