关于heroku的PSQLException

时间:2017-12-08 21:25:24

标签: java postgresql heroku apache-cayenne

我使用java,apache-cayenne和postgreSQL。

我的应用在桌面上工作正常,但是当我在Heroku上运行时出现错误:

org.postgresql.util.PSQLException: Bad value for type timestamp/date/time: 
{1}

还有警告:

INFO org.apache.cayenne.log.JdbcEventLogger - --- transaction started.
WARN org.apache.cayenne.access.types.SerializableTypeFactory - Haven't found suitable ExtendedType for class 'java.time.LocalDate'. Most likely you need to define a custom ExtendedType.
WARN org.apache.cayenne.access.types.SerializableTypeFactory - SerializableType will be used for type conversion.
INFO org.apache.cayenne.log.JdbcEventLogger - --- transaction started.
INFO org.apache.cayenne.log.JdbcEventLogger - SELECT t0.DATE, t0.ROOM, t0.TIME, t0.TYPE, t0.PROFESSOR_ID, t0.SUBJECT_ID, t0.LESSON_ID FROM Lesson t0 JOIN Subject t1 ON (t0.SUBJECT_ID = t1.SUBJECT_ID) WHERE (t0.DATE = ?) AND (t1.USER_ID = ?) [bind: 1->DATE:2017-12-08, 2->USER_ID:81627965]

这是我的xml:

<db-entity name="Lesson">
    <db-attribute name="DATE" type="DATE"/>
    <db-attribute name="LESSON_ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
    <db-attribute name="PROFESSOR_ID" type="INTEGER"/>
    <db-attribute name="ROOM" type="VARCHAR" length="50"/>
    <db-attribute name="SUBJECT_ID" type="INTEGER"/>
    <db-attribute name="TIME" type="TIME"/>
    <db-attribute name="TYPE" type="INTEGER"/>
</db-entity>
<obj-entity name="Lesson" className="com.intetics.organizerbot.entities.Lesson" dbEntityName="Lesson">
    <obj-attribute name="date" type="java.time.LocalDate" db-attribute-path="DATE"/>
    <obj-attribute name="room" type="java.lang.String" db-attribute-path="ROOM"/>
    <obj-attribute name="time" type="java.time.LocalTime" db-attribute-path="TIME"/>
    <obj-attribute name="type" type="int" db-attribute-path="TYPE"/>
</obj-entity>

我在桌面和Heroku上使用相同的Heroku Postgres数据库。

似乎与LocalDate类有关的问题。但我不知道为什么一切都在我的电脑上工作正常,而heroku也有问题。

我也试过部署运行良好的jar,但它仍然无法正常工作。

您是否知道为什么会发生这种情况?我该如何解决?

关于生产服务器Bad value for type timestamp on production server的模拟问题 但我似乎无法在Heroku上应用它的答案。

1 个答案:

答案 0 :(得分:0)

为了使用Cayenne的Java 8 Dec 19, 2017 1:32:13 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-nio-8080"] Dec 19, 2017 1:32:13 PM org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-nio-8009"] Dec 19, 2017 1:32:13 PM org.apache.catalina.startup.Catalina start INFO: Server startup in 18955 ms 类,您需要确保在项目中包含 cayenne-java8 模块,有关详细信息,请参阅此docs。没有它,Cayenne就不知道如何处理这些课程。