gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:34:56 25 4
gpt4 key购买 nike

好的,所以我花了一上午时间尝试更改我的 XAMPP 设置上的默认排序规则。

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

    CREATE VIEW `test` AS
SELECT
Format(some_data_table.double_number,0) AS string_result
FROM some_data_table;

当我查看返回的列时,它显示为 utf8mb4_general_ci。我已经在 my.ini 和 phpMyAdmin 的 config.inc.php 中尝试了各种设置无济于事。

不得已,我准备在view中添加collat​​ion参数。

如果有任何经过测试的解决方案,我将不胜感激

最佳答案

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

当 SQL Format() 将数字转换为字符串时,它使用变量 character_set_results。PMA 的变量选项卡将其显示为“utf8”,但在下面的一行中显示( session 值)= 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 版本的理论,所以我备份了文件并编辑了用 替换 utf8mb4 的类utf8 在这个函数中。phpMyAdmin 现在在其变量选项卡中显示我想要的内容,而 Format() 函数现在返回我期望的内容。

关于mysql - PHPMyAdmin 强制使用 ut8mb4 作为默认排序规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com