我知道有很多这方面的问题,但我认为我的math是正确的。 MySQL为每个UTF8字符保留3个字节。 MyISAM允许长度为1000字节的密钥。 我的UTF8 VARCHAR(255) 应该是255 * 3 = 765个字节 除非UNQUE需要额外的200 +字节,否则为什么这不起作用? mysql> ALTER TABLE entry ADD UNIQUE INDEX (name(255)); ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes 有什么我可以做的呢? 编辑: 事实certificate,限制是250.看起来字符数为4个字节的唯一索引,但我不知道为什么。 编辑2: 感谢Vladislav Vaintroub,charset确实是utf8mb4。 解决了这个谜。 我没有看到这个变化的任何文件。 我猜它通过隐式截断字段来构build非唯一索引,这对于唯一索引是不可接受的,所以它拒绝。 如果您重新input您的评论作为答案,我会很乐意接受。 解决scheme:指定utf8,而不是utf8mb4(MySQLpipe理员不允许这样做,所以手动创build表)
我试图将下面的tweet存储到长文本列/ utf8 charset / MySQL 5.5中。 数据库与MyISAM存储上。 我们也尝试了utf8mb4,utf16,utf32的字符集,但无法超越这个问题。 tweet="@Dorable_Dimples: Okay enough of those #IfYouWereMines I'm getting dep ressed. #foreveralone ?" lol yes mysql> ALTER DATABASE foo CHARACTER SET utf8 COLLATE utf8_bin; mysql> show variables like 'char%'; +————————–+——————————————-+ | Variable_name | Value | +————————–+——————————————-+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database […]
我尝试从我的MySQL数据库中的服务中保存用户的名字。 这些名称可以包含像🙈😂😱🍰这样的emojis(仅举例) search一下后,我发现这个链接到本教程的 stackoverflow 。 我按照步骤,它看起来像一切正常configuration。 我有一个数据库(charset和collation设置为utf8mb4(_unicode_ci)),一个名为TestTable的表,还configuration了这种方式,以及一个“文本”列,configuration这种方式(VARCHAR(191)utf8mb4_unicode_ci)。 当我尝试保存表情符号时出现错误: Example of error for shortcake (🍰): Warning: #1300 Invalid utf8 character string: 'F09F8D' Warning: #1366 Incorrect string value: '\xF0\x9F\x8D\xB0' for column 'Text' at row 1 我能够正确保存的唯一表情符号是太阳☀️ 虽然我没有尝试所有这些都是诚实的。 有什么我在configuration中丢失? 请注意:所有的保存testing都不涉及客户端。 我使用phpmyadmin手动更改值并保存数据。 所以客户端的正确configuration是在服务器正确保存emojis 之后我会照顾的。 另一个旁注 :目前,当保存emojis我得到上面的错误,或不会出现错误, Username 🍰的数据将被存储为Username ???? 。 错误或没有错误取决于我保存的方式。 当通过SQL语句创build/保存时,我用问号保存,当编辑内联时,我用问号保存,当使用编辑button进行编辑时,我得到错误。 谢谢 编辑1:好,所以我想我发现了问题,但不是解决scheme。 它看起来像数据库特定variables没有正确更改。 当我在我的服务器上以root身份login并读出variables(全局)时: 使用的查询: SHOW VARIABLES […]
在mysql中utf8mb4和utf8 charsets有什么区别? 我已经知道ASCII,UTF-8,UTF-16和UTF-32编码; 但我很想知道'utf8mb4'编码组与其他编码types在mysql服务器中定义的区别是什么。 使用utf8mb4而不是utf8有什么特别的好处?
我们正在开发一个iPhone应用程序,将从iPhone的表情符号发送到服务器端PHP并插入到MySQL表中。 我正在做服务器端的工作。 但插入语句执行成功后,插入的值变为空白。 我可以正确插入字段(varchar)的是文本,但是一旦包含表情符号, 只要文本可以插入,表情符号会自动切割。 有人给我build议将字段types设置为博客,以便它可以存储图像数据。 但插入的值并不总是包含表情符号和大小是小的。 *我正在使用mysql_real_escape_string来插入值。
这是我的连接设置: Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8", userName, password); 而且在向表中添加一行时出现以下错误: Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90…' for column 'content' at row 1 我插入了成千上万的logging,当文本包含\ xF0时(即不正确的string值始终以\ xF0开头),我总是得到这个错误。 该列的sorting规则是utf8_general_ci。 可能是什么问题呢?
我正在使用MySQL 5.5.10,它的character_sets是 | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | | collation_connection | utf8mb4_general_ci | | collation_database | utf8mb4_general_ci | | collation_server | […]