mysql varchar(50) 不管中文 還是英文 都是存50個(gè)的
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括射洪網(wǎng)站建設(shè)、射洪網(wǎng)站制作、射洪網(wǎng)頁制作以及射洪網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,射洪網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到射洪省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
MySQL5的文檔,其中對(duì)varchar字段類型這樣描述:varchar(m) 變長(zhǎng)字符串。M 表示最大列長(zhǎng)度。M的范圍是0到65,535。(VARCHAR的最大實(shí)際長(zhǎng)度由最長(zhǎng)的行的大小和使用的字符集確定,最大有效長(zhǎng)度是65,532字節(jié))。
為何會(huì)這般變換?真是感覺MySQL的手冊(cè)做的太不友好了,因?yàn)槟阋屑?xì)的繼續(xù)往下讀才會(huì)發(fā)現(xiàn)這段描述:MySQL 5.1遵從標(biāo)準(zhǔn)SQL規(guī)范,并且不刪除VARCHAR值的尾部空格。VARCHAR保存時(shí)用一個(gè)字節(jié)或兩個(gè)字節(jié)長(zhǎng)的前綴+數(shù)據(jù)。如果VARCHAR列聲明的長(zhǎng)度大于255,長(zhǎng)度前綴是兩個(gè)字節(jié)。
好了,貌似懂了一點(diǎn)。但具體他說的長(zhǎng)度大于255時(shí)使用2個(gè)字節(jié)長(zhǎng)度前綴,小學(xué)減法題:65535 - 2 = 65533啊。不知道這些大牛如何計(jì)算的,暫且保留疑問吧?
注:我測(cè)試了一下使用UTF8編碼,varchar的最大長(zhǎng)度為21854字節(jié)。
在mysql 5.0.45版本,數(shù)據(jù)庫(kù)編碼utf8下進(jìn)行測(cè)試:varchar最長(zhǎng)定義為21785。也就是說不論字母、數(shù)字、漢字,只能放21785個(gè)。
推想:varchar字節(jié)最大65535,utf8編碼一個(gè)字符3個(gè)字節(jié)65535/3=21785。
方法一:
如果曾經(jīng)的數(shù)據(jù)都不需要的話,可以直接清空所有數(shù)據(jù),并將自增字段恢復(fù)從1開始計(jì)數(shù)
truncate
table
表名
方法二:
dbcc
checkident
('table_name',
reseed,
new_reseed_value)
當(dāng)前值設(shè)置為
new_reseed_value。如果自創(chuàng)建表后沒有將行插入該表,則在執(zhí)行
dbcc
checkident
后插入的第一行將使用
new_reseed_value
作為標(biāo)識(shí)。否則,下一個(gè)插入的行將使用
new_reseed_value
+
1。如果
new_reseed_value
的值小于標(biāo)識(shí)列中的最大值,以后引用該表時(shí)將產(chǎn)生
2627
號(hào)錯(cuò)誤信息。
方法二不會(huì)清空已有數(shù)據(jù),操作比較靈活,不僅可以將自增值歸零,也適用于刪除大量連續(xù)行后,重新設(shè)置自增值并插入新的數(shù)據(jù);或從新的值開始,當(dāng)然不能和已有的沖突。
$sql="delete
from
$table_vote";
mysql_query($sql,
$link);
$sql="alter
table
$table_vote
auto_increment=1";
mysql_query($sql,
$link);
你如果想要給表增加一個(gè)字段,那么有很多種方法可以完成,比如說直接add一個(gè)字段在add的后面寫上字段的名稱和屬性。
MYSQL中單行的總長(zhǎng)度不能超過65535bytes,應(yīng)該是你的原有的字段長(zhǎng)度已經(jīng)差不多到這個(gè)限制了,不能再加新字段了。
一、添加字段的命令如下: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 '項(xiàng)目' AFTER `default_module`;
擴(kuò)展資料
增加字段注意事項(xiàng):
1、在增加字段的語句中需要注意的是,comment為注釋,就像在java中//作用是一樣的。
2、comment后需要加單引號(hào)將注釋引起來。
3、創(chuàng)建新表的腳本中,可在字段定義腳本中添加comment屬性來添加注釋。
參考資料 百度百科 mySQL
很有可能是你給的數(shù)據(jù)類型長(zhǎng)度不夠. 注意你在設(shè)定列長(zhǎng)度時(shí)要考慮中文的長(zhǎng)度, 如果是以u(píng)tf8存儲(chǔ)的,一個(gè)漢字占用3個(gè)字節(jié). 如果在一個(gè)varchar(5)中存儲(chǔ)兩個(gè)漢字,只會(huì)出現(xiàn)一個(gè)正常的漢字,另外一個(gè)漢字是亂碼. 這是因?yàn)樗荒艽?個(gè)字節(jié),而一個(gè)漢字是3個(gè)字節(jié),第2個(gè)漢字被"肢解"了.
估計(jì)你的問題原因與此類似. 你把列長(zhǎng)度設(shè)長(zhǎng)一點(diǎn)應(yīng)該可以解決.
當(dāng)前文章:mysql怎么增加字?jǐn)?shù) mysql的增加語句
網(wǎng)頁URL:http://jinyejixie.com/article0/hpcgoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、定制網(wǎng)站、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站制作、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容