mysql数据库属性为varchar类型,但插入中文时显示data too long

首先使用setnamesgbk,然后运行SQL。
错误码1 005 表示建表失败。

MYSQL数据库插进数据为中文时就提示错误

嘿,你的问题很复杂。
首先说一下这个字符编码。
我以前也遇到过这种情况,当时也很困惑,后来才意识到。
你从命令行登录MySQL,创建数据库,设置为UTF-8 编码,然后想要插入中文字符,却抛出错误ERROR1 4 06 (2 2 001 ),这很令人沮丧。

一开始以为是字段长度太长,后来发现其实是字符编码问题。
我从 Linux 系统的终端登录 MySQL 并发出命令“setnamesutf8 ;”一个。
这个技巧非常有效。
执行该命令后,终端的字符编码将切换为UTF-8 如果插入中文内容,就不会出现错误。
不过请注意,直接将中文粘贴到Linux终端时,可能不会出现错误,但此时粘贴的数据会按照系统默认的编码进行处理。
所以如果数据库编码是UTF-8 的话,显示时可能会出现乱码。

对于Windows系统,命令行窗口不支持UTF-8 编码,所以“setnamesutf8 ;”用过的。
行不通的。
不过解决办法是有的:一是使用创建数据库时的默认编码,这样就可以直接输入中文了。
但缺点是失去了UTF-8 编码的灵活性,不利于软件的国际化。
另一种是不通过命令行窗口登录MySQL,而是使用图形客户端。
这个客户端可以在MySQL官方网站上找到。

那就不得不提一下MySQL的配置文件my.ini。
检查其中是否存在该SQL模式参数。
默认值为“STRICT_TRANS_TABLES、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION”。
删除或注释掉 STRICT_TRANS_TABLES 元素,然后重新启动 MySQL 可能会解决该问题。

嘿嘿,以前我很极端,认为这些技术问题是微不足道的。
后来我发现解决这些小问题有时是相当乏味的。
然而,一旦你学会了一些东西,你就不会那么投入。

mysql 数据库varchar(100)可以存储多少个汉字,多少个数字

记得有一次,我在一个老项目中遇到了一个数据库设计问题。
当时我们还在用MySQL 4 .0版本,有一个字段是varchar(5 0)。
项目组有一位同事是新手。
他正在设计一个表来存储一些用户名。
他没有注意字节数和字符数的关系,直接填写了名字。
原来5 0字节的字段只能存放1 6 个汉字。
当时我们都很惊讶,因为他认为他可以存储5 0个汉字。
后来我告诉他这是版本问题。
4 .0以下版本的varchar字段以字节为单位计算。
等等,我突然想到,如果你用5 .0以上的版本,不就解决了吗? 是的,在5 .0及以上版本中,varchar字段是按字符计算的,可以存储5 0个汉字。
不过,最好的办法还是自己建一个表,试试看能放多少个汉字。
现在我们用的是5 .0以上版本,应该没有问题了。
但谁知道呢,也许还有其他数据库细节需要注意。