由於項目需要,現將原來的底層MySQL數據庫替換為對空間擴展支持更完善的PostGreSQL數據庫。
大概整理了下轉化的一些要點。
表對應:
1、MYSQL 的 ID 唯一鍵 對應 PostgreSQL中的 serial字段。
2、varchar 都一樣,注意字符數。
3、int float double 都有對應的字段
4、字段如果有 “`”,去掉。
5、PostgreSQL 是大小寫區分的。默認導進去的sql語句都會轉為小寫。
6、datetime 對應 TIMESTAMP ,date,time 分別都有對應。 PostgreSQL 有 默認 DEFAULT now()。
可能出現的幾個錯誤:
1、postgres默認安裝好像不支持hibernate自增長。會提示hibernate_sequence不存在。
執行:
CREATE SEQUENCE hibernate_sequence INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1;
ALTER TABLE table_name ALTER COLUMN id SET default nextval('hibernate_sequence');
同時在hibernate配置文件中設置Id的生成方式為 identity(前提是數據庫中id設置了sequence),即可創建postgres的hibernate自增長支持
2、Postgres另一個小問題上,它的"serial"數據類型(等價於MYSQL的auto_increment)會造成一個"sequence"。
如果從mysql中批量導入數據,會存在 自動 department_id_seq 下的 START 1 不自動增加。
解決方法,直接用pgadmin管理更改。