Things to be changed as migrating from MySql to PostgreSQL
MySql | PostgreSQL |
---|---|
START TRANSACTION;, COMMIT;, ROLLBACK; | BEGIN;, COMMIT;, ROLLBACK; |
`id` | “id” |
reserved keywords xxx | “xxx” |
“…” | ‘…’ |
\” | ” |
\’ | ’’ |
\n | |
case insensitive | case sensitive |
USE my_db | \c my_db or just remove it as it’s not needed |
_binary | E’\xFFF’ |
INSERT 1 TO BIT(X) column | INSERT B’1’ TO BIT(X) column |
INSERT INSERT IGNORE INTO | INSERT INTO … ON CONFLICT ([COLUMN]) DO NOTHING |
LIMIT 10 OFFSET 20 | OFFSET 20 FETCH FIRST 10 ROWS ONLY; |
DELETE t1 FROM table_1 t1 JOIN table_2 t2 ON | DELETE FROM table_1 WHERE id NOT IN (SELECT … FROM table_2) |
LAST_INSERT_ID() | INSERT…RETURNING id |
a JOIN b JOIN c ON a.id=b.id AND b.id=c.id | a JOIN b ON a.id=b.id JOIN c ON b.id=c.id |
SELECT COUNT(col_a), col_b FROM … | SELECT COUNT(col_a), col_b FROM … GROUP BY col_b |
NOW(),CURDATE(),CURTIME(),UNIX_TIMESTAMP() | CURRENT_TIMESTAMP,CURRENT_DATE,CURRENT_TIME, ROUND(EXTRACT(epoch FROM CURRENT_TIMESTAMP)) |
IFNULL(expr1, expr2) | COALESCE(expr1, expr2) |
if(boolean, integer, integer) | CASE WHEN boolean THEN integer ELSE integer END |
# | – |
CONCAT(str1, str2) | str1 || str2 |
|| | OR |
GRANT ALL PRIVILEGES ON db_name.* TO ‘user_name’@’%’; | GRANT ALL PRIVILEGES ON DATABASE db_name TO user_name; |
Database.initMySqlDb() | Database.initPostgresDb() |
Remove mysql dependency in POM | add Postgres dependency in POM |