【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上。
上一頁12下一頁查看全文 內容導航