gpt4 book ai didi

MySQL:MySQL 表中的两个不同值被视为相同(不能设置唯一键)

转载 作者:行者123 更新时间:2023-11-29 01:20:30 24 4
gpt4 key购买 nike

我已经转储了我的小 MySQL 表(手动缩小以定位问题)以在此处显示:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;



CREATE TABLE `symb` (
`smb` varchar(200) NOT NULL,
`trtmnt` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `symb` (`smb`, `trtmnt`) VALUES
('і', 'ty'),
('ї', 'hr');


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

如果您创建上面的 MySQL 表并运行此查询

select * from symb where smb = 'ї';

或这个(查询不同 - 请查看符号“ї”与“і”)

select * from symb where smb = 'і';

然后您可能会看到您选择了两行而不是我期望的一行。

再次强调,上面的这两个选择查询是不同的 - 符号“ї”不同于“і”(两者都是西里尔符号,“і”在这里不是拉丁语)。

Collation chosen was utf8_general_ci

“і”和“ї”被视为相同符号的原因是什么?使其不同的正确方法是什么?我需要选择确切的行,而不是两行。

上面的查询是在 phpMyAdmin 和 HeidiSQL 中测试的,这意味着这是 MySQL(整理?)问题,而不是用于运行查询的程序。每个不同的符号都应该被视为不同的符号,并且表格应该区分大小写。上表有什么问题?因此,我无法为此行设置唯一键。

谢谢。

刚刚根据评论添加:SHOW TABLE STATUS LIKE 'symb' 向您显示什么?它向我展示:

Name    symb
Engine InnoDB
Version 10
Row_format Compact
Rows 2
Avg_row_length 8192
Data_length 16384
Max_data_length 0
Index_length 0
Data_free 0
Auto_increment NULL
Create_time 22.05.16 12:11
Update_time NULL
Check_time NULL
Collation utf8_general_ci
Checksum NULL
Create_options
Comment

最佳答案

这就是您选择的排序规则的工作方式。您可以在这里查看更多信息:https://stackoverflow.com/a/1036459/4099089

关于MySQL:MySQL 表中的两个不同值被视为相同(不能设置唯一键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372587/

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