`
yangtao309
  • 浏览: 66524 次
  • 性别: 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://每天记录一点 离成功近一点

   
分享到:
评论

相关推荐

    PostgreSQL数据库内核分析

    PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析PostgreSQL数据库内核分析...

    PostgreSQL数据库内核分析.pdf

    PostgreSQL数据库内核分析.pdf

    Python编写PostgreSQL数据库结构比对程序源代码

    在IT行业中,数据库管理是至关重要的任务之一,特别是在软件开发和数据分析领域。PostgreSQL是一种流行的开源关系型数据库管理系统,以其强大的功能和稳定性受到广大开发者喜爱。Python作为一种易学且功能丰富的编程...

    C# 操作PostgreSQL 数据库

    在IT领域,C#是一种广泛使用的编程语言,尤其在开发Windows应用程序、Web应用程序以及游戏开发等方面。PostgreSQL则是一款强大的开源关系型数据库管理系统,以其稳定性、可扩展性和丰富的功能著称。本文将深入探讨...

    连接postgresql数据库需要的jar包

    在Java中,JDBC驱动是实现Java标准API(java.sql)的类库,它允许Java应用程序执行SQL语句并与各种数据库进行交互,包括PostgreSQL。 PostgreSQL是一种开源的关系型数据库管理系统(RDBMS),以其强大的功能、稳定...

    PostgreSQL数据库内核分析 清晰版

    PostgreSQL数据库内核分析 清晰版,完整415页

    PostgreSQL数据库内核分析 完整版

    《PostgreSQL数据库内核分析》彭智勇 完整版44M

    Postgresql数据库集群在主题网络爬虫的应用.pdf

    ### Postgresql数据库集群在主题网络爬虫的应用 #### 摘要 随着互联网的迅猛发展,海量信息的处理成为搜索引擎及各类数据抓取系统面临的重大挑战。为了更高效地管理和利用这些信息,本文探讨了PostgreSQL数据库...

    深入探索:Python与PostgreSQL数据库的集成应用

    PostgreSQL的强大功能和Python的灵活性结合起来,为开发高效、可靠的数据库应用程序提供了强大的支持。 本文详细介绍了Python与PostgreSQL数据库的集成使用方法,包括安装配置、基础的CRUD操作、事务管理以及使用...

    如何恢复PostgreSQL数据库

    PostgreSQL 是一个功能强大且广泛使用的开源关系数据库管理系统,但是在实际应用中,数据库崩溃或无法启动的情况时有发生。这时,如何恢复 PostgreSQL 数据库变得非常重要。下面将详细介绍如何恢复 PostgreSQL ...

    asp连接postgresql数据库

    asp连接postgresql数据库 的源码

    postgresql10数据库生成文档工具

    PostgreSQL 10数据库生成文档工具是一款高效实用的软件,专为PostgreSQL 10数据库设计,旨在简化数据库管理和文档编制工作。通过该工具,用户能够轻松地从数据库中提取信息,生成详细的文档,以便更好地理解和维护...

    Matlab与PostgreSQL数据库的连接

    同时,也可以使用 Matlab 来开发数据库应用程序,例如数据 Entry 系统、数据报表系统等。 本文详细介绍了 Matlab 与 PostgreSQL 数据库的连接方法,并对相关知识点进行了详细的解释。通过本文,读者可以快速地掌握 ...

    nacos适配postgresql数据库

    1.nacos服务,适配postgresql数据库。 2.提供nacos,postgresql的创建nacos数据库脚本。 3.nacos/conf/nacos-pg.sql数据库脚本文件。 4.nacos版本1.4.2。

    【PostgreSQL数据库开发文档】PostgreSQL数据库管理系统快速入门

    【PostgreSQL数据库开发文档】PostgreSQL数据库管理系统快速入门

    postgreSQL数据库通过ADO访问所需OLE驱动

    总的来说,PgOleDb-1.0.0.20为Windows上的ADO应用程序提供了一个方便的途径来访问和操作PostgreSQL数据库,简化了开发工作。使用这个驱动,开发者可以利用熟悉的ADO接口,无缝地集成PostgreSQL到他们的应用中。

    postgresql数据库定时备份脚本(linux)

    PostgreSQL是一个功能强大的开源关系型数据库系统,广泛应用于各种规模的企业和项目。定时备份可以帮助我们在系统故障、误操作或其他不可预见的情况下恢复数据。以下是对“postgresql数据库定时备份脚本(linux)”...

    postgresql-42.2.14.数据库驱动jar

    总结来说,"postgresql-42.2.14.jar"是PostgreSQL数据库的Java驱动程序,它提供了与PostgreSQL数据库进行交互的桥梁,使Java开发者能够轻松地在应用程序中执行数据库操作。其兼容性广泛,包括对PostgreSQL 9.6的支持...

    Python-一个PostgreSQL数据库迁移工具

    综上所述,Python中的PostgreSQL数据库迁移工具如pgmigrate,是开发过程中的重要组成部分,它帮助我们管理和控制数据库的结构变更,确保项目的顺利进行。通过理解这些工具的工作原理和最佳实践,开发者能够更有效地...

Global site tag (gtag.js) - Google Analytics