Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
play20 ebean生成的sql在postgresql上抛出语法错误_Sql_Heroku_Playframework 2.0 - Fatal编程技术网

play20 ebean生成的sql在postgresql上抛出语法错误

play20 ebean生成的sql在postgresql上抛出语法错误,sql,heroku,playframework-2.0,Sql,Heroku,Playframework 2.0,我正在尝试使用postgresql来运行我的play20应用程序,这样我就可以使用并在以后部署到Heroku。我遵循了这一点 基本上,我建立了到数据库的连接(所以从本地应用程序到Heroku postgresql数据库的连接工作正常),但我无法使用生成的1.sql evolution初始化数据库。但生成的sql不起作用,因为postgresql正在使用(不管怎样,在没有模式的情况下它应该可以工作,但显然我做错了什么,或者数据库做错了什么) 导致 我通过在表名中添加模式修复了这个问题 create

我正在尝试使用postgresql来运行我的play20应用程序,这样我就可以使用并在以后部署到Heroku。我遵循了这一点

基本上,我建立了到数据库的连接(所以从本地应用程序到Heroku postgresql数据库的连接工作正常),但我无法使用生成的1.sql evolution初始化数据库。但生成的sql不起作用,因为postgresql正在使用(不管怎样,在没有模式的情况下它应该可以工作,但显然我做错了什么,或者数据库做错了什么)

导致

我通过在表名中添加模式修复了这个问题

create table public.user(
  ...
);
好的,在我尝试读取或写入数据库之前,一切都正常。我再次遇到sql语法异常,无法使用数据库。似乎sql查询在某种程度上是错误的


有什么建议哪里会有问题吗?

好吧,由于我对postgresql的了解很少,我整天都在努力解决这个问题。这里有一个简单的解决方案。不要在postgreqsl上使用名为“user”的表。此表已被使用

但为什么我的EvolutionSQL查询用于数据库的初始化呢?若我显式地指定要在哪个模式中创建表“user”,那个么基本上是可行的

但如果未指定模式,则使用当前模式。发件人:

如果给定了架构名称(例如,CREATE TABLE myschema.mytable…),则在指定的架构中创建该表。否则,它将在当前架构中创建


这就解释了。但对于我的项目来说,使用“用户”模型是完全合理的,对于基于H2文件的数据库来说,它是可行的,所以我假设问题出在其他地方…

这是使用其他数据库而不是在生产中开发应用程序时非常常见的错误,但幸运的是,也有共同的解决方案。您仍然可以使用
User
model,但必须确保创建的数据库表的名称已更改:

@实体
@表(name=“users”)
公共类用户扩展模型{
...
}
在大多数情况下,在控制器和模型中,名称开关对您来说是透明的。唯一需要记住开关的地方是查询


顺便说一句,在本地安装相同的数据库进行开发是个好主意,因为大多数流行的数据库之间有很多差异,比如其他保留关键字、其他允许的类型,甚至其他id的自动递增方法,所以在本地主机上查找和修复正确的值更容易。

谢谢您,先生:)你为我节省了很多重命名模型的工作。谢谢!这真是太烦人了,因为我的模型中已经没有用户了,但进化过程从未得到更新。游戏清理所有游戏编译力再生
ERROR: syntax error at or near "user"
  Position: 14 [ERROR:0, SQLSTATE:42601]
create table public.user(
  ...
);