我无法让我的简单grails应用程序通过我创建的用户插入到我的表中,即使我能够在SQl管理工作室中运行查询就好了。
我收到此错误:
The INSERT permission was denied on the object 'mini_user', database 'Mini_test', schema 'dbo'
InvalidDataAccessResourceUsageException: could not insert: [com.grailsinaction.MiniUser]; SQL [insert into mini_user (version, date_created, password, profile_id, user_id) values (?, ?, ?, ?, ?)];
我可以在管理工作室中运行上述查询,没有任何错误。
这是我的Grails配置,虽然问题似乎在SQL服务器端。
dataSource {
pooled = true
driverClassName = "net.sourceforge.jtds.jdbc.Driver"
dialect = "org.hibernate.dialect.SQLServerDialect"
}
test {
dataSource {
url = "jdbc:jtds:sqlserver://127.0.0.1:1433/Mini_test;instance=SQLEXPRESS;user=tester2;password=tester2"
}
我还将jtds-1.3.1.jar放在“lib”中(如果我能解决这个问题,我可能会切换到maven依赖项)并在buildconfig.groovy中放置一个运行时字符串。
dependencies {
runtime 'net.sourceforge.jtds:jtds:1.3.1'
}
这是我试图给“tester2”提供任何和所有访问权限:
我不知道还有什么可以尝试。看起来我已经给了该用户无限制访问权限,因此我不确定这些权限问题来自何处。
答案 0 :(得分:1)
我注意到你没有在conf文件中指定数据库名称。
这就是我的样子:
dataSource {
url = "jdbc:jtds:sqlserver://server1:1433;databaseName=MyDbName"
username = "user"
password = "*******Pass"
// logSql=true
}
此外,请确保已在服务器级别的安全性中设置用户映射,而不是仅在数据库级别的安全性下设置。
答案 1 :(得分:1)
我没有仔细查看权限。我检查了“db_denydatareader”和“db_denydatawriter”。非常简单...