gpt4 book ai didi

grails - Grails in Action 2nd Edition-错误生成脚手架

转载 作者:行者123 更新时间:2023-12-02 15:56:46 25 4
gpt4 key购买 nike

我一直在努力尝试使用Groovy Grails工具套件自学Grails。

GGTS 3.6.4
Grails 2.4.4
JDK 1.8.0_45

我在这本书中的P.92,有两个问题:

  • 运行Grails控制台时,出现以下错误:
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table post drop constraint FK_kpfnivid38f5bwx3yl1lxeeae if exists
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - Table "POST" not found; SQL statement:
    alter table post drop constraint FK_kpfnivid38f5bwx3yl1lxeeae if exists [42102-176]
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table post_tags drop constraint FK_rf0kr7eqk5xoalmc4gigdwg3p if exists
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - Table "POST_TAGS" not found; SQL statement:
    alter table post_tags drop constraint FK_rf0kr7eqk5xoalmc4gigdwg3p if exists [42102-176]
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table post_tags drop constraint FK_n8k2owli9ecanh4phj01mddvv if exists
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - Table "POST_TAGS" not found; SQL statement:
    alter table post_tags drop constraint FK_n8k2owli9ecanh4phj01mddvv if exists [42102-176]
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table profile drop constraint FK_c1dkiawnlj6uoe6fnlwd6j83j if exists
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - Table "PROFILE" not found; SQL statement:
    alter table profile drop constraint FK_c1dkiawnlj6uoe6fnlwd6j83j if exists [42102-176]
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table tag drop constraint FK_151ooxskkpn49blwsh7mjwysx if exists
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - Table "TAG" not found; SQL statement:
    alter table tag drop constraint FK_151ooxskkpn49blwsh7mjwysx if exists [42102-176]
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table user_user drop constraint FK_s7pwk9swjfqs0w7ub9tt5s47y if exists
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - Table "USER_USER" not found; SQL statement:
    alter table user_user drop constraint FK_s7pwk9swjfqs0w7ub9tt5s47y if exists [42102-176]
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table user_user drop constraint FK_1hl85r166108l1vgkxycm3cq0 if exists
    Error |
    2015-09-29 08:03:29,168 [main] ERROR hbm2ddl.SchemaExport - Table "USER_USER" not found; SQL statement:
    alter table user_user drop constraint FK_1hl85r166108l1vgkxycm3cq0 if exists [42102-176]

  • 我的猜测是,问题是因为我没有将 DataSource.groovy文件更改为 'update'而不是 'create-drop'并导致数据库内存不足。

    我尚未检验该理论,因为Grails控制台仍在运行,这导致了我的第二个错误。
  • 被告知使用以下命令生成4个 Controller :
    create-scaffold-controller com.grailsinaction.User
    create-scaffold-controller com.grailsinaction.Profile
    create-scaffold-controller com.grailsinaction.Post
    create-scaffold-controller com.grailsinaction.Tag

  • 每次,我收到一个“EOF预期”错误:
    1 compilation error:

    expecting EOF, found 'com' at line: 1, column: 28

    这两个错误似乎并不相关,我真的想了解发生了什么,而不仅仅是跳过它。

    任何帮助,将不胜感激。

    最佳答案

    DataSource.groovy文件替换为'update'而不是'create-drop',从而使数据库内存不足。

    这是假设您已配置数据源以连接到真实数据库。

    我可以看到hbm2ddl是上面的日志,对于您内部的内存DB,它实际上应该是'create-drop'DataSource.groovy文件中的'update'文件告诉您的应用程序仅更新现有表,这不会创建任何新表。

    在连接到现实生活中的应用程序的情况下,可以说是MySQL。此设置等同于您然后手动更新数据库并创建您在开发中设计的任何新表。
    DataSource.groovy文件到'create-drop'的名称是一样的,它将创建新表和放置条目,因此在开发环境甚至测试等其他环境下,您可能很乐意将其保留在create-drop上并让grails生成表。

    唯一需要注意的一件事是,如果让我们假设您有一个具有

    Boolean isValid

    static constraints {
    isValid(nullable:false)
    }

    如果您以后没有决定在MySQL示例的情况下实际上是否应该为空,则必须先登录并手动对其进行调整,因为它已经创建。对于内联内存(您的示例),谁在乎下一个run-app = fresh db。

    关于:
    create-scaffold-controller

    这是一个新的 http://grails.github.io/grails-doc/2.4.4/ref/Command%20Line/create-scaffold-controller.html,看起来正确,您正在执行什么。

    但是,如果我理解正确(我还没有开始深入研究该命令的作用),则尝试简化或扩大视野,但是肯定不能不手动完成此类操作。

    grails create-controller com.grailsinaction.User

    然后转到用户类并执行以下操作:
    class UserController {
    static scaffold = true
    }

    保存每个重复,然后继续使用文档。

    在此处了解有关脚手架概念的更多信息:

    http://grails.asia/grails-tutorial-for-beginners-scaffolding/

    http://tutorials.techmytalk.com/2014/07/19/grails-scaffolding-controllers-and-views/

    另外,如果您使用的是ggts,请使用鼠标右键选择域类,然后选择“我认为grails会生成 Controller 和 View ”

    这将是脚手架的替代方法,脚手架是动态为您提供的内容,然后生成供您使用和编辑。这是进入grails的好方法,因为它为您提供了可以查看/编辑和学习的内容。

    脚手架只是隐藏了所有这些,是隐藏生成的东西的一种整洁的方式。

    关于grails - Grails in Action 2nd Edition-错误生成脚手架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370389/

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