Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我是否在这个mysql字段中存储4字节的表情符号?_Mysql_Collation - Fatal编程技术网

为什么可以';我是否在这个mysql字段中存储4字节的表情符号?

为什么可以';我是否在这个mysql字段中存储4字节的表情符号?,mysql,collation,Mysql,Collation,我有一个数据库,我要求一个表中只有两个字段允许存储4字节的emojis。我这样做了(显然使用了正确的表名和列名): 我知道它是有效的,因为当我做show create table chatbots\u proposalarea它向我显示以下内容: CREATE TABLE `chatbots_proposalarea` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8mb4_bin NOT NU

我有一个数据库,我要求一个表中只有两个字段允许存储4字节的emojis。我这样做了(显然使用了正确的表名和列名):

我知道它是有效的,因为当我做
show create table chatbots\u proposalarea它向我显示以下内容:

CREATE TABLE `chatbots_proposalarea` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8mb4_bin NOT NULL,
  `proposal` varchar(1500) COLLATE utf8mb4_bin DEFAULT NULL,
  `candidate_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `chatbots_proposalare_candidate_id_6465160e_fk_chatbots_` (`candidate_id`),
  CONSTRAINT `chatbots_proposalare_candidate_id_6465160e_fk_chatbots_` FOREIGN KEY (`candidate_id`) REFERENCES `chatbots_candidate` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

字段“name”和“proposal”似乎具有uft8mb4_bin排序规则,并且在运行命令时没有显示错误。但是,当我尝试在那里保存一个值时,例如“segurida,这不是表的错误;这是连接。类似于:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
                    'charset': 'utf8mb4',
                    'use_unicode': True, },
    },
}

我测试了这个,它对我有效。使用MySQL 5.7.27。这能回答你的问题吗?我在这些系统变量中看到很多“utf8”。它应该都是“utf8mb4”“.Yeah,我的都是‘utf8mb4’,除了不能更改的
字符集系统
。我更改了变量,变量保持不变,我更新了问题,尽管当我直接在mysql控制台上做一个UPDATE语句时会发生同样的情况,但情况不是这样,或者是这样吗?”?不仅仅是当我通过Django更新时。每个连接都控制自己的字符集(etc)选项。我展示的是给Django的。命令行“mysql”工具可以使用
设置名称utf8mb4在运行查询之前。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS': {
                    'charset': 'utf8mb4',
                    'use_unicode': True, },
    },
}