gpt4 book ai didi

hibernate - 使用 Grails 访问遗留 PostgreSQL 表时出现缺少表错误

转载 作者:行者123 更新时间:2023-11-29 12:05:54 25 4
gpt4 key购买 nike

几天来,我一直在尝试从我的 Grails 应用程序连接到 PostgreSQL 数据库的旧表,但没有成功。

我想要什么

我只想从我的 grails 应用程序查询此表(其中存储了用户)以检查登录凭据。用户登录 grails 应用程序,我必须检查提供的密码是否与存储在该表中的密码匹配。

由于我尝试访问的表名为“user”(这是一个关键字),因此我创建了一个别名 View “users”我正在使用 grails,只是为了避免可能出现的问题。

下面我提供有关我的问题的更多信息,希望有人能帮助我。

手动查询结果

当在控制台中直接从 postgres 执行 select * from public.users 时,我得到以下结果:

                id                    |   name    |           apikey          |          created           | about | openid |            password           | fullname |            email             | reset_key 
--------------------------------------+-----------+---------------------------+----------------------------+-------+--------+-------------------------------+----------+------------------------------+-----------
ef8661be-6627-40e3-8b58-e78f3363680f | logged_in | this-is-an-api-key-sample | 2012-12-11 14:17:28.949515 | | | | | |
0c49f23a-350c-43d9-a1ec-34057125acd7 | visitor | this-is-an-api-key-sample | 2012-12-11 14:17:28.953194 | | | | | |
591798d4-f85e-4bc2-a352-a41635c83653 | admin | this-is-an-api-key-sample | 2013-04-10 15:08:47.104103 | | | thisisanencodedpasswordsample | admin | username@email.com |
25c8b15f-ec67-472b-b551-3c7112d4a2db | grails | this-is-an-api-key-sample | 2013-04-10 15:12:44.257821 | | | thisisanencodedpasswordsample | grails | username@email.com |

在我的 grails 应用程序中,我有以下文件:

用户域类

class User {
String user_id
String name
String apikey
String created
String about
String openid
String password
String fullname
String email
String resetKey

static mapping = {
version false
autoTimestamp false
table "public.users"
resetKey column: "reset_key"
created column: "created", sqlType: "timestamp without time zone"
user_id column: "id", sqlType: "text"
id name: 'user_id'
}
}

数据源

dataSource {
pooled = true
dbCreate = "validate"
logSql = true
url: "jdbc:postgresql://192.168.1.100:5432/ecodata"
driverClassName = "org.postgresql.Driver"
dialect = net.sf.hibernate.dialect.PostgreSQLDialect
username = "ecodata"
password = "******"
}

POM 依赖

    <dependency>
<groupId>org.grails.plugins</groupId>
<artifactId>hibernate</artifactId>
<version>2.1.2</version>
<scope>runtime</scope>
<type>zip</type>
</dependency>

<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
<scope>runtime</scope>
</dependency>

错误 我在启动 grails 应用程序时遇到的错误是:

[...] Caused by: org.hibernate.HibernateException: Missing table: users [...]

我希望有人能帮助解决这个问题。提前致谢。

问候

最佳答案

跟进:

我终于解决了问题!实际上这是我的错,虽然这是一个很难看清的棘手错字......

在我的数据源中,您可以看到以下行:

url: "jdbc:postgresql://192.168.1.100:5432/ecodata"

但实际上应该是:

url = "jdbc:postgresql://192.168.1.100:5432/ecodata"

我在调试与数据库的 grails 连接的深度时意识到了这个错字。我看到除了数据源的 url 之外的所有内容都具有正确的配置。提交的 url 有一个默认的内存数据库值。真奇怪……然后,再次仔细检查数据源,我看到冒号而不是等号。该死!我喜欢动态语言,但这些错别字会让人非常沮丧......

第一个问题解决了。

另一个问题:hibernate_sequence错误(也解决了)

一旦我解决了前一个问题,又出现了另一个错误:

Caused by: org.hibernate.HibernateException: Missing sequence or table: hibernate_sequence 

阅读了一下之后,我发现这个错误是由于对遗留数据库执行的验证而发生的。我解决了它删除验证。这是通过注释以下行(也在数据源中)完成的

//    dbCreate = "validate"

我希望这篇文章能对以后的人有所帮助。这就是我发布解决方案的原因,我最初遇到的问题以及 hibernate_sequence 问题。

关于hibernate - 使用 Grails 访问遗留 PostgreSQL 表时出现缺少表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16396582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com