VARCHAR(15)是否意味着您在该字段中最多可以包含15个字符?如果是这样,为什么我会收到'数据太长'错误?
我将数据插入 123456789 ,没有问题,
但 123456789 我
Data too long for column 'customer_phone' at row 1
他们有相同数量的字符!
我的表定义(部分):
+-------------------+---------------+------+-----+-------------------+--------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+---------------+------+-----+-------------------+---------------+
| id | int(11) | NO | PRI | NULL | auto_increment|
| customer_id | int(11) | NO | MUL | NULL | |
| customer_name | varchar(75) | YES | | NULL | |
| customer_phone | varchar(15) | YES | | NULL | |
| paid_amount | decimal(10,2) | NO | | NULL | |
| paid_currency | varchar(4) | NO | MUL | NULL | |
| ex_rate | decimal(8,2) | NO | | NULL | |
| date_time | datetime | NO | MUL | CURRENT_TIMESTAMP | |
| is_virtual | tinyint(1) | NO | | 0 | |
+-------------------+---------------+------+-----+-------------------+---------------+
答案 0 :(得分:0)
确保在运行插入查询之前将连接字符集设置为UTF8
您必须更改列varchar(30)
的长度或将排序规则更改为UTF8
ALTER TABLE mytable CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci
答案 1 :(得分:0)
找到字符集并确保设置为UTF8。
这样做只需将以下内容添加到您的my.cnf文件中
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
答案 2 :(得分:0)
... UTF-8是一种多字节8位编码,其中每个Unicode标量 value被映射到一到四个字节的序列。 ...
简单地说,当你使用utf8时,你的字符串可以包含一到四个字节的字符。我认为英文字符占用一个字节,而阿拉伯语/波斯字符占两个字节。
使用varchar(N)时,意味着可以插入N个字节。这意味着你可以插入N / 2个arrabic字符。
结论:如果要插入带有(N)阿拉伯语/波斯语字符的字符串,则必须选择varchar(2 * N)。
请告知我这是否有效,以及会发生什么。