我一直在努力使用Groovy Grails工具套件自学Grails。
GGTS 3.6.4 Grails 2.4.4 JDK 1.8.0_45
我在书中的P.92有2个问题:
运行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个控制器:
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
这两个错误似乎并不相关,而不仅仅是跳过它,我真的很想了解发生了什么......
任何帮助都将不胜感激。
答案 0 :(得分:0)
DataSource.groovy
将文件发送到'update'
而不是'create-drop'
,并将数据库从内存中删除。
这假设您已将数据源配置为连接到真实数据库。
我可以看到hbm2ddl是上面的日志,对于你的内部内存数据库,它应该应该是'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生成控制器和视图
这将是脚手架的替代方案,脚手架为您提供动态,然后生成供您使用和编辑的脚手架。它是一个很好的方式进入grails,因为它提供了你可以看到/编辑和学习的东西。
脚手架只是隐藏了所有这些,并且是隐藏生成的东西的整洁方式。