English 中文(简体)
MySQL UTF8 瓦尔查栏大小
原标题:MySQL UTF8 varchar column size

MySQL documentation says that since 5.0, varchar lengths refer to character units, not bytes. However, I recently came across an issue where I was getting truncated data warnings when inserting values that should have fit into the varchar column it was designated.

我用简单的表格复制了这一问题。

mysql> show create table testG
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
  `string` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

之后,我插入了10种特性值,其特性各不相同。

mysql> insert into test (string) values 
    -> ( abcdefghij ),
    -> ( ãáéíçãáéíç ),
    -> ( ãáéíç67890 ),
    -> ( éíç4567890 ),
    -> ( íç34567890 );
Query OK, 5 rows affected, 4 warnings (0.06 sec)
Records: 5  Duplicates: 0  Warnings: 4

mysql> show warnings;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column  string  at row 2 |
| Warning | 1265 | Data truncated for column  string  at row 3 |
| Warning | 1265 | Data truncated for column  string  at row 4 |
| Warning | 1265 | Data truncated for column  string  at row 5 |
+---------+------+---------------------------------------------+

mysql> select * from test;
+------------+
| string     |
+------------+
| abcdefghij |
| ãáéíç |
| ãáéíç |
| éíç4567 |
| íç345678 |
+------------+
5 rows in set (0.00 sec)

我认为,这表明,var体大小仍然以斜体或至少以体字表示,并非准确的特性单位。

问题在于,我是否正确理解文件,这是否是ug? 还是我对文件的解释有误?

最佳回答

确实,VARCHAR和CHAR的大小在性质上得到了考虑,而不是被tes。

在我确定我的联系特征时,我能够重新讨论你的问题。

• 确保你在接获插入问询之前将你的联系性质定在UTF8:

SET NAMES utf8

如果你不这样做,那么每两半的UTF8特性就会被作为单一特性发送。

您不妨考虑修改以下网站:http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_character_set_client”rel=“noreferer”>。 违约客户特性为

问题回答

暂无回答




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签