天天看點

mysql不同應用互相影響_MySQL應用開發中遇到的幾個問題與解決方法

【IT168技術文檔】我們機關是個綜合性的門診部,目前聯網工作的機器有近二十台,門診日常工作的關鍵流程基本上都在網上進行。我們目前的資料庫軟體使用的就是MySQL,下面把我在使用MySQL中遇到的一些問題與大家交流。

一、從ORACLE到MySQL

最初設計的機關資訊系統,工作平台時使用的是Windows環境,工作站跑98,伺服器跑2000,因為對MySQL并不熟悉,是以資料庫選用的是ORACLE。

三年前開始準備向linux開發環境過渡,正好當時機關有許多新業務要向區域網路上移植,網絡上的業務量大大增加,老伺服器速度太慢,于是新購置一台伺服器,聯想T280,裝機的時候我就直接裝上了紅旗linux的作業系統,資料庫就使用了系統裡帶的MySQL。

在Windows環境中我的開發工具是C++Builder,資料庫接口用的是開發工具裡帶的BDE。使用ORACLE時,BDE裡直接有ORACLE的驅動,使用MySQL時稍稍麻煩一點,BDE裡沒有直接對MySQL的驅動,但可以通過ODBC的方式和MySQL連接配接。首先安裝MySQL官方的ODBC驅動程式,然後在控制台的資料源裡添加系統DSN,把MySQL伺服器加進去,添加成功之後,在BDE裡就會看到剛才添加的DSN,程式通路MySQL就通過這個DSN來完成。

之後就是程式的修改。從ORACLE轉向MySQL的程式移植比較突出的問題有兩個:一是資料表的名稱大小寫問題,二是函數問題。

在送往ORACLE伺服器的SQL語句中,資料表名的大小寫是不敏感的,SQL語句大小寫的差別僅僅是為了美觀,但在Linux上的MySQL裡,大寫和小寫的表名稱含義卻不一樣,“TABLE”和“table”在ORACLE裡表示的同一個表,但在MySQL裡它們是兩個不同的表。

函數問題比較突出的一個是關于日期的函數。在程式裡許多地方的操作都與日期有關,ORACLE中用到日期的SQL語句中一般都是這麼寫:to_date('2009-02-03','yyyy-mm-dd'),在MySQL中卻可以直接這麼寫:‘2009-02-03’,取系統日期的函數在ORACLE中是sysdate,在MySQL中則是curdate()。其它的函數因為用的比較少,是以沖突并不突出。

把這兩個問題解決之後,程式就可以正常運作了。當時的移植并沒有一步到位,采用了逐漸過渡的方法,有些資料表放在ORACLE裡,有些資料表放在MySQL裡,共用了一段時間後,才完全移植到MySQL上。