MySQL數(shù)據(jù)庫出現(xiàn)N多問題的原因
以下的文章介紹的是用MySQL數(shù)據(jù)庫出現(xiàn)N多問題,我們大家都知道系統(tǒng)用 access數(shù)據(jù)庫,沒有任何的問題出現(xiàn),但是隨著數(shù)據(jù)量不斷的增加,其相關(guān)性能下降的很快,但是最起碼,沒有錯。
后臺考慮到未來發(fā)展,轉(zhuǎn)移到MySQL數(shù)據(jù)庫平臺,結(jié)果一下子就出現(xiàn)了一堆問題。
1. 中文字符不支持。
這個就夠我忙幾個小時(shí)了,又是修改my.ini,又是修改鏈接字符串??偹愀愫昧?。
2. 插入時(shí)間格式不支持
簡直吐血了。在c#里,日期含有中文“上午”“下午”,由于MySQL修改支持了中文,插入的時(shí)候直接報(bào)錯了。
這種低級的問題超級吐血,只好在持久層自己添加一個轉(zhuǎn)換。
3. 插入的中文突然丟失了一般
測試的時(shí)候,突然發(fā)現(xiàn)插入的中文沒了一般,英文正常,字段類型是Text。再次吐血,找不到方法之后,最后只好重建MySQL數(shù)據(jù)庫。
4. 插入BLOb,圖片錯誤。
如果是字符轉(zhuǎn)化為byte[],沒有問題,如果是文件之類的就錯。估計(jì)還是中文字符問題。
只能再次修改持久層,對byte[]進(jìn)行base64加密。
吐血中?。。。。?/p>
5. 這次竟然是官方代碼拋的異常?。。?!我靠?。?!老大,這個是誰寫的啊!
TABLENAME:POS_SALESORDER
LOG:System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。
參數(shù)名: length
在 System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
在 MySQL.Data.Types.MySQLString.MySQL.Data.Types.IMySQLValue.WriteValue(MySQLStream stream, Boolean binary, Object val, Int32 length)
在 MySQL.Data.MySQLClient.MySQLParameter.Serialize(MySQLStream stream, Boolean binary)
在 MySQL.Data.MySQLClient.Statement.SerializeParameter(MySQLParameterCollection parameters, MySQLStream stream, String parmName)
在 MySQL.Data.MySQLClient.Statement.BindParameters()
在 MySQL.Data.MySQLClient.PreparableStatement.Execute()
在 MySQL.Data.MySQLClient.MySQLCommand.ExecuteReader(CommandBehavior behavior)
在 MySQL.Data.MySQLClient.MySQLCommand.ExecuteNonQuery()
在 Pixysoft.Framework.Noebe.NoebeCommand.Execute()
救命啊。。什么原因?。。∵@次連debug都沒有辦法了。
我估計(jì)還有無數(shù)的問題在等著我。
開源啊開源,不是我刻意說你。也擺脫你爭氣點(diǎn)。我做軟件也5年多,用.net從來不會被小問題阻礙,可以專心研究算法、框架。可是一搞java,一搞開源的,就無數(shù)的小問題。
比如hibernate, tmd,竟然版本升級了,連namespace都變了。 這可以說,直接使網(wǎng)上數(shù)以百萬計(jì)的hibernate demo code, helloworld變成費(fèi)碼。對于初學(xué)者,這是多么沉重的打擊。
比如eclipse, 無數(shù)的擁護(hù)者肯定唾罵我。但是,和vs2005比起來,我寧愿面對無數(shù)的唾罵,也要支持vs2005。eclipse是有些不錯的功能,但是那個性能。。那個易用性。。。嗨。。一啟動就300m內(nèi)存。用個智能提示等半天假死。還有很多打包、部署、一大堆問題。不是說ant不好,可是我只是想打個包,讓我寫一堆xml干嘛,而且寫的跟寫代碼一樣,還分拆在不同的目錄。救命。。。比看代碼還累。
后來出了個所謂的maven的,說專門針對部署的,怎么怎么好。我們用起來,簡直一個狗屁。只要任意一個版本變動,立刻病毒效應(yīng)。立刻打包失敗,而且失敗的莫名其妙。我們的工程師也就1、2個人才能解決,比如修改打包配置文件版本號最后2位之類的,其他的都云里霧里。
還有java里面做界面的,不要跟我說javaswing怎么樣,最后還不是IBM推出的基于c的SWT,才結(jié)束了JAVA的界面噩夢。以上的相關(guān)內(nèi)容就是對用MySQL數(shù)據(jù)庫相當(dāng)多問題的介紹,望你能有所收獲。
【編輯推薦】