MySQL → PostgreSQL 语法迁移对照:这 10 个差异必须提前知道
引言 表结构迁完了、数据也灌进去了,应用一连数据库,报错像连珠炮一样蹦出来:column "user_id" does not exist(明明字段就在那)、operator does not exist: integer = character varying(参数类型不对)、syntax error at or near "LIMIT"(LIMIT 两个参数写反了)……我们迁第一个服务时,300 多条 MyBatis SQL 在测试环境跑出了 70 多个语法错误,全部集中在同一批高频差异上。 MySQL 的哲学是"我尽量帮你跑",PostgreSQL 的哲学是"写错了我就报错"。这篇不讲选型(那是上一篇《为什么迁移》的事),只解决迁移动手时的具体问题——把返工率最高的 10 个语法差异逐个列透:每一个都给 MySQL 写法、PG 写法、错误现场和修复,MyBatis 项目额外标注 XML 适配要点。建议直接收藏,迁移时对照逐条改。 差异 1:自增主键 AUTO_INCREMENT → IDENTITY(SERIAL 能用但不推荐) MySQL CREATE TABLE t_ord....