`
yangtao309
  • 浏览: 67367 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在postgreSQL数据库上 SSH应用开发bug记录

阅读更多

前言 :
    把之前开发好的项目从oracle数据库移植到postgreSQL上

    项目中用到的技术:struts2 spring2.5 hibernate3.2
    生成ID的策略用的是SEQUENCE
    是知道了 oracle 和PostgreSQL 都支持SEQUENCE才进行安全迁移的
    数据库版本 oracle10g postgreSQL8.2.3
   
    下面就说 迁移过程中遇到的问题:
    数据库定义类型和结构不同,手动建了几张表
    如:表名 ERP2_TEST 序列SEQ_ERP2_TEST
        字段 ID integer not null
        字段 NAME character varying(20)
        等等.... 建好表以及序列, 没有在PostgreSQL上测试表

    可以看到这里 表名 字段 序列都是大写的

    一切认为OK了 就开始跑程序

    bug1:
org.postgresql.util.PSQLException: ERROR: relation " seq_erp2_test " does not exist


类似这样的错误 序列找不到

然后查看postgreSQL文档 和 网上前辈是否也处理过这样的问题

知道了一种 在PostgreSQL8.2版本以上 可以创建serial类型的字段
那么就开始重新键那张测试表

表名 字段 依旧大写,建好表后 PostgreSQL自动给生成了想要的序列 如:ERP2_TEST_ID_seq

改相应程序中 指定序列生成器的地方

OK了吧 看似。。重启tomcat...

bug2:
org.postgresql.util.PSQLException: ERROR: relation " ERP2_TEST_ID_seq " does not exist


这就奇怪了呢 看了网上一朋友的 英文留言...说什么 改成 ERP2_TEST_id_seq就OK了

没办法 行不行 程序跑了 才知道
结果 依然~~

我索性 把序列名全部改成小写形式 erp2_test_id_seq...
先露出点得意的笑 好了 启动不报错误了....

再就是跑具体的模块的增删改查操作....

有一次被囧了...

bug3
org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
.....
##具体我看到一行错误 说是 没找到表 erp2_test
#我不是定义了的吗?


试了好多次... 仔细发现是找不到表
我看到 PostgreSQL 定义表结果的语句是

CREATE TABLE "ERP_ROLE"
(
  "ID" integer NOT NULL DEFAULT nextval('"ERP_ROLE_ID_seq"'::regclass),
  "NAME" character varying(20) NOT NULL,
  CONSTRAINT "PK_ERP_ROLE" PRIMARY KEY ("ID")
) 
WITHOUT OIDS;
ALTER TABLE "ERP_ROLE" OWNER TO postgres;


我然后改成小写 测试
表定义 成为
CREATE TABLE erp_role
(
  "ID" integer NOT NULL DEFAULT nextval('"erp_role_id_seq"'::regclass),
  "NAME" character varying(20) NOT NULL,
  CONSTRAINT "PK_ERP_ROLE" PRIMARY KEY ("ID")
) 
WITHOUT OIDS;
ALTER TABLE erp_role OWNER TO postgres;


启动应用 报相应的找不到 id name 等
然后逐一 改成小写形式
CREATE TABLE erp_role
(
  id integer NOT NULL DEFAULT nextval('"erp_role_id_seq"'::regclass),
  name character varying(20) NOT NULL,
  CONSTRAINT "PK_ERP_ROLE" PRIMARY KEY (id)
) 
WITHOUT OIDS;
ALTER TABLE erp_role OWNER TO postgres;


然后就好了呢....
postgreSQL 真的好奇怪 还区分大小写... 这么搞人...
哎呀..

啰啰嗦嗦 说了这些
ps://每天记录一点 离成功近一点

   
分享到:
评论

相关推荐

    数据库工具,适用多个数据库

    【数据库工具】是一种至关重要的软件应用,主要用于管理和操作各种类型的数据库。这些工具提供了一个图形用户界面(GUI),使得数据库管理员、开发人员以及数据分析人员能够更方便地执行查询、管理数据、设计数据库...

    JDiy框架与javaWeb建站平台 v2.6.1.zip

    修复MSSQL数据库环境下,自增主键表在save后,无法立即获取新增记录的id的bug. 优化JDiyRequest的InputStream(允许使用第三方上传组件). 修复数据库连接池中连接失效后,控制台会报错(但不影响使用)的bug;修复...

    Navicat Premium_11.2.7简体中文版.rar

    总的来说,Navicat Premium 11.2.7简体中文版是数据库管理员、开发人员和分析师的理想选择,它提供了一站式的数据库管理解决方案,无论是在日常维护还是复杂的数据分析场景中,都能展现出强大的实力。

    dbeaver 解压即食 64位

    它支持多种数据库类型,包括SQL标准的MySQL、PostgreSQL、Oracle、SQL Server等,以及NoSQL数据库如MongoDB、Apache Cassandra等。这款工具以其跨平台、免费且功能全面而受到广泛欢迎。 在“dbeaver 解压即食 64位...

    RDM 2021.5 官方社区版

    RDM 2021.5可能包含对性能的提升、新功能的添加以及已知问题的修复,使得数据库管理员和开发人员在日常工作中能更便捷地管理和维护数据库。 对于Mac用户,特别是那些拥有搭载M1芯片的新一代Mac设备的用户,`RDM ...

    Mantis的安装过程

    4. 数据库:MySQL、PostgreSQL或SQLite。 5. FTP客户端(可选):用于上传文件到服务器。 **二、下载与解压** 1. 访问Mantis官方网站(https://www.mantisbt.org/releases/),下载最新稳定版的Mantis源代码。 2. ...

    Python库 | Pyventory-3.1.tar.gz

    3. **存储和检索**:收集到的数据会被存储在一个持久化的数据库中,可以是SQLite、MySQL或PostgreSQL等。用户可以通过API查询和更新这些数据,为自动化运维提供便利。 4. **API与命令行工具**:Pyinventory不仅提供...

    centos 7 ubuntu 18 ambari2.7.3 + hdp3.1.0

    - 配置数据库连接信息(如MySQL或PostgreSQL)。 2. **配置Ambari Agent**: - 在每台客户端机器上安装Ambari Agent。 - 配置Agent指向Ambari Server的IP地址和端口号。 3. **安装HDP 3.1.0.0**: - 通过Ambari ...

Global site tag (gtag.js) - Google Analytics