gpt4 book ai didi

grails - 当将域类设置为另一个域类中的字段时,访问旧版数据库的域类会引发错误?

转载 作者:行者123 更新时间:2023-12-02 14:42:43 26 4
gpt4 key购买 nike

我正在尝试访问grails中的旧数据库,并且能够成功完成此任务。这是访问旧数据库的域类的样子:

class Login {

Long accountId
String characterName

// some other fields

static mapping = {
id name: "accountId"
version false
}
}

我想在另一个对象中使用Login类,如下所示:
class UserLogin {
User user
Login login

static constraints = {
}}

但是,当我运行我的应用程序时,出现此错误:
 | Error 2014-10-02 02:02:57,624 [localhost-startStop-1] ERROR hbm2ddl.SchemaUpdate  - HHH000388: Unsuccessful: alter table user_login add constraint FK_tn46n0dpvxs543dgi3378wj1x foreign key (login_id) references login (account_id)
| Error 2014-10-02 02:02:57,625 [localhost-startStop-1] ERROR hbm2ddl.SchemaUpdate - Can't create table 'kokoo.#sql-4e0_74' (errno: 150)

如何正确地将Login对象用作User字段?我感觉是因为映射。

最佳答案

映射是可以的,但是当您启动应用程序时,Grails会尝试针对域类更新现有的数据库架构。由于您已在多对一关系中使用了Login域,因此Grails会尝试在login表上为其创建外键,但由于某种原因而失败(例如,外键已存在)。

对于旧数据库,建议通过为dataSource设置dbCreate = 'validate'来禁用自动模式更新,请参阅详细信息:http://grails.org/doc/latest/guide/conf.html#3.3%20The%20DataSource。您可以随后手动支持数据库架构一致性,或使用migration plugin

关于grails - 当将域类设置为另一个域类中的字段时,访问旧版数据库的域类会引发错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147919/

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