gpt4 book ai didi

mysql - Grails Web 应用程序为远程数据库生成 MySql 重复条目,但不为本地测试数据库生成

转载 作者:行者123 更新时间:2023-11-30 22:58:12 25 4
gpt4 key购买 nike

托管服务器: Tomcat 7、MySql 5.5.24

本地服务器: Tomcat 7、MySql 5.6

Grails 2.4.2

该问题仅在使用托管数据库时出现,而不是我的本地 MySql 服务器。

错误发生在以下代码中。

@Override
def save()
{
def comment = new Comment(request.JSON)
def place = Place.get(params.placeId)
place.addToComments(comment)
place.save(flush: true) //Explodes here

respond comment
}

错误是

| Error 2014-08-13 18:19:01,678 [http-bio-8086-exec-5] ERROR spi.SqlExceptionHelper  - Duplicate entry '1' for key 'UK_fojv2ahcp1jompc2cg2gryqce'
| Error 2014-08-13 18:19:01,789 [http-bio-8086-exec-5] ERROR errors.GrailsExceptionResolver - MySQLIntegrityConstraintViolationException occurred when processing request: [POST] /SecondAmendmentSupporters/places/1/comments/
Duplicate entry '1' for key 'UK_fojv2ahcp1jompc2cg2gryqce'. Stacktrace follows:
Message: Duplicate entry '1' for key 'UK_fojv2ahcp1jompc2cg2gryqce'
Line | Method
->> 411 | handleNewInstance in com.mysql.jdbc.Util
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 386 | getInstance in ''
| 1041 | createSQLException in com.mysql.jdbc.SQLError
| 4237 | checkErrorPacket in com.mysql.jdbc.MysqlIO
| 4169 | checkErrorPacket . in ''
| 2617 | sendCommand in ''
| 2778 | sqlQueryDirect . . in ''
| 2834 | execSQL in com.mysql.jdbc.ConnectionImpl
| 2156 | executeInternal . in com.mysql.jdbc.PreparedStatement
| 2441 | executeUpdate in ''
| 2366 | executeUpdate . . in ''
| 2350 | executeUpdate in ''
| 39 | save . . . . . . . in secondamendmentsupporters.CommentController
| 198 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter . . . . . in grails.plugin.cache.web.filter.AbstractFilter
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run . . . . . . . in ''
^ 695 | run in java.lang.Thread

Place 和 Comment 之间的关联是多对一的。多评论一处。

如果您查看下面的请求,它看起来好像数据库正在尝试为 ID 为 1 的地点向数据库添加一个新条目,而不是仅仅更新它。

[POST] /SecondAmendmentSupporters/places/1/comments/

远程数据库和本地数据库之间的唯一区别是 MySql 版本。这可能是问题所在吗?

编辑

放置域

static hasMany =
[
comments:Comment
]

评论域

static belongsTo = [place: Place]

编辑

事实证明,grails 在本地将我的外键 place_id 视为 Index(MUL),但在我的远程数据库上,它是 Unique(UNI),因此导致重复 ID 异常。关于如何解决这个问题的想法?

最佳答案

你正在保存地点对象而不是评论对象。放

comment.save(flush:true)

代替

place.save(flush: true)

再试一次

关于mysql - Grails Web 应用程序为远程数据库生成 MySql 重复条目,但不为本地测试数据库生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25298801/

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