Mysql PHPMyAdmin强制使用ut8mb4作为默认排序规则

Mysql PHPMyAdmin强制使用ut8mb4作为默认排序规则,mysql,utf-8,collation,Mysql,Utf 8,Collation,好的,我花了一上午的时间试图更改XAMPP设置中的默认排序规则 问题是:我在视图中使用Format()将double转换为字符串 CREATE VIEW `test` AS SELECT Format(some_data_table.double_number,0) AS string_result FROM some_data_table; 当我查看返回的列时,它显示为utf8mb4\u general\u ci。 我在my.ini和phpMyAdm

好的,我花了一上午的时间试图更改XAMPP设置中的默认排序规则

问题是:我在视图中使用Format()将double转换为字符串

    CREATE VIEW `test` AS
    SELECT 
        Format(some_data_table.double_number,0) AS string_result
    FROM some_data_table;
当我查看返回的列时,它显示为utf8mb4\u general\u ci。 我在my.ini和phpMyAdmin的config.inc.php中尝试了各种设置 无济于事

最后,我准备将collation参数添加到视图中

对于任何经过测试的解决方案,我将不胜感激(如果测试用例没有通过,我不会给你一个经过测试的解决方案。)

这里有一个可能的解释:

mysql> SELECT FORMAT(2e7, 0);
+----------------+
| FORMAT(2e7, 0) |
+----------------+
| 20,000,000     |
+----------------+
但是您在一个“区域设置”中工作,“千位分隔符”是
,而不是

解决方案与排序规则无关。相反,请查看
FORMAT()
的参数

我猜MS Access和MySQL采用了不同的“区域设置”,因此在数千个分隔符以及其他可能的差异上遇到了障碍

关于区域设置的引用:


好的-我将为登陆这里的其他人发布我自己的答案: (我在别的地方见过这个,但当时不相信,因为没有解释)

当SQL Format()将数字转换为字符串时,它使用变量character\u set\u results。 PMA的变量选项卡将其显示为“utf8”,但在下面的一行上,它表示(会话值)=utf8mb4。
所以我知道PMA正在覆盖服务器默认值。 我真正的问题是,我找不到改变这种覆盖的方法——或者使用[mysqld]跳过字符集客户端握手设置。。或者通过编辑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\u MYSQL\u INT\u VERSION>50503似乎符合我关于较旧MYSQL版本的理论,因此我备份了该文件并编辑了类,在该函数中将utf8mb4替换为utf8
phpMyAdmin现在在其变量选项卡中显示了我想要的内容,Format()函数现在返回了我期望的内容。

在那里使用utf8mb4排序规则到底有什么问题…?它会导致MS Access在遇到该列时崩溃。这里的所有其他系统都是utf8_general_ciLet’s see the顽皮的字符串。谢谢rick-这是一个pMA问题-与MS Access无关。
        // 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';
        }