Mysql 非主服务器上grails的重复条目问题

Mysql 非主服务器上grails的重复条目问题,mysql,grails,Mysql,Grails,决定添加一个小日志,基本上记录代码、请求ip和日期戳 这是域类 class Requestlog { String countryiso Date requestdate String requestaddr static constraints = { } } 以及创建记录的代码 def reqip = request.remoteAddr def reqdate = new Date() def reqrec = new

决定添加一个小日志,基本上记录代码、请求ip和日期戳

这是域类

  class Requestlog {
    String countryiso
    Date requestdate
    String requestaddr
    static constraints = {
    }
}
以及创建记录的代码

    def reqip = request.remoteAddr
    def reqdate = new Date()
    def reqrec = new Requestlog(countryiso: countryiso, requestaddr: reqip, requestdate: reqdate )
    reqrec.save(flush:true,failOnError:true)
但是如果在不同的时间请求来自同一IP的相同代码两次

Duplicate entry 'GL' for key 'UK_3noxnln23h2w0wtormncmk2a1'. Stacktrace follows:
Message: Duplicate entry 'GL' for key 'UK_3noxnln23h2w0wtormncmk2a1'
    Line | Method

问题是,我没有将任何列设置为唯一的。看看数据库模式,除了id列自动递增之外,没有其他约束

经过一段时间的磨蹭,我发现了这个问题

“UK3noxnln23h2w0wtormncmk2a1”是无双关语的关键。 这是一个在创建时似乎由grails或mysql自动生成的索引,因此当我尝试在数据库中使用相同的代码创建一个新条目时,它抛出了一个异常,因为它要求只有一个条目与索引匹配

我通过mysql workbench编辑器进入并删除了它,我的应用程序开始工作,并有望继续工作

我想知道是mysql还是grails设置了索引,以及是否有函数现在无法工作。对我来说,我只是在写这张表,从不阅读,所以索引对我来说没什么区别

请注意,如果您已经在datasource.config上创建了索引,那么每次启动应用程序时都必须删除该索引,而不是删除名为ID的索引,它是具有所需长名称的索引