十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql varchar(50) 不管中文 还是英文 都是存50个的
成都创新互联服务项目包括射洪网站建设、射洪网站制作、射洪网页制作以及射洪网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,射洪网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到射洪省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
MySQL5的文档,其中对varchar字段类型这样描述:varchar(m) 变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,最大有效长度是65,532字节)。
为何会这般变换?真是感觉MySQL的手册做的太不友好了,因为你要仔细的继续往下读才会发现这段描述:MySQL 5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节。
好了,貌似懂了一点。但具体他说的长度大于255时使用2个字节长度前缀,小学减法题:65535 - 2 = 65533啊。不知道这些大牛如何计算的,暂且保留疑问吧?
注:我测试了一下使用UTF8编码,varchar的最大长度为21854字节。
在mysql 5.0.45版本,数据库编码utf8下进行测试:varchar最长定义为21785。也就是说不论字母、数字、汉字,只能放21785个。
推想:varchar字节最大65535,utf8编码一个字符3个字节65535/3=21785。
方法一:
如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数
truncate
table
表名
方法二:
dbcc
checkident
('table_name',
reseed,
new_reseed_value)
当前值设置为
new_reseed_value。如果自创建表后没有将行插入该表,则在执行
dbcc
checkident
后插入的第一行将使用
new_reseed_value
作为标识。否则,下一个插入的行将使用
new_reseed_value
+
1。如果
new_reseed_value
的值小于标识列中的最大值,以后引用该表时将产生
2627
号错误信息。
方法二不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。
$sql="delete
from
$table_vote";
mysql_query($sql,
$link);
$sql="alter
table
$table_vote
auto_increment=1";
mysql_query($sql,
$link);
你如果想要给表增加一个字段,那么有很多种方法可以完成,比如说直接add一个字段在add的后面写上字段的名称和属性。
MYSQL中单行的总长度不能超过65535bytes,应该是你的原有的字段长度已经差不多到这个限制了,不能再加新字段了。
一、添加字段的命令如下:alter table tableName add newColumn varchar(8) comment '新添加的字段'
1、添加单行字段:
ALTER TABLE role
ADD `module` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块';
2、添加多行字段:
ALTER TABLE role
ADD COLUMN `module` int(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT '模块',
ADD COLUMN `type` VARCHAR(30) NOT NULL COMMENT '项目' AFTER `default_module`;
扩展资料
增加字段注意事项:
1、在增加字段的语句中需要注意的是,comment为注释,就像在java中//作用是一样的。
2、comment后需要加单引号将注释引起来。
3、创建新表的脚本中,可在字段定义脚本中添加comment属性来添加注释。
参考资料 百度百科 mySQL
很有可能是你给的数据类型长度不够. 注意你在设定列长度时要考虑中文的长度, 如果是以utf8存储的,一个汉字占用3个字节. 如果在一个varchar(5)中存储两个汉字,只会出现一个正常的汉字,另外一个汉字是乱码. 这是因为它只能存5个字节,而一个汉字是3个字节,第2个汉字被"肢解"了.
估计你的问题原因与此类似. 你把列长度设长一点应该可以解决.