Mysql 字符串比较在数据库、文件中不起作用。。。角色集可能是个问题吗?

Mysql 字符串比较在数据库、文件中不起作用。。。角色集可能是个问题吗?,mysql,character-encoding,string,Mysql,Character Encoding,String,我最近在字符串方面遇到了一个奇怪的问题: 我有两张桌子: | AgentCodes | CREATE TABLE `AgentCodes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `AgentName` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `AgentName` (`AgentN

我最近在字符串方面遇到了一个奇怪的问题:

我有两张桌子:

| AgentCodes | CREATE TABLE `AgentCodes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `AgentName` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `AgentName` (`AgentName`),
) ENGINE=ndbcluster AUTO_INCREMENT=319 DEFAULT CHARSET=latin1 |

比如
在AgentCodes.AgentName表上不起作用,我猜这是因为AgentName有
unicode
字符集,所以我将该字段上的字符集更改为
Latin1

现在的问题是AgentNumber表被用作AsteriskPBX队列的实时表 基本上,我得到代理的名称并将调用方放入该队列中

例如,我得到的名称是JohnDoe,conf文件如下所示:

[JohnDoe]
musicclass = temp
timeout = 35
member => SIP/...
我得到一个错误,说没有这样的队列。我知道问题出在哪里,所以我将数据库中的名称复制到了conf文件中,并且成功了

我的问题是,是什么导致了这个问题,在文件中看到两个字符串,在数据库中看到另一个,在第三个文件中复制/粘贴它们(它们看起来仍然相同),但它们不被认为是相同的


我想这可能与编码/字符集有关,但我想听听原因:)

不要忘记MySQL,就像进行字符比较,而不是字符串比较一样。所以像尾随空间这样的东西很重要。我们没有实际的SQL,例如,您要比较的是文本还是变量


另外,为什么要在两个不同的表中使用AgentName?这看起来没有正常化,当然,您现在正在了解为什么正常化很重要。

实际问题是什么,您希望得到什么解决方案?AgentCodes.AgentName类似“”??感谢重播。过去没有,现在仍然没有。我将两个表中的名称复制到文件中,但仍然看不到它们之间的差异,但它们无法匹配。这一点都不正常,这是因为工作马虎,而且花费较少:)
[JohnDoe]
musicclass = temp
timeout = 35
member => SIP/...