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

标签 sql heroku playframework-2.0

我正在尝试使用 postgresql 来启动我的 play20 应用程序,以便我可以使用并稍后部署到 Heroku。我关注了这个answer .

基本上,我建立了与数据库的连接(因此从本地应用程序到 Heroku postgresql 数据库的连接有效),但我无法使用生成的 1.sql evolution 来初始化数据库。但生成的 sql 无法工作,因为 postgresql 正在使用 schema (无论如何它应该在没有模式的情况下工作,但显然我做错了什么或者数据库做错了什么)。

create table user (
id                        bigint not null,
email                     varchar(255),
gender                    varchar(1),
constraint pk_user primary key (id));

结果

ERROR: syntax error at or near "user"
  Position: 14 [ERROR:0, SQLSTATE:42601]

我通过向表名称添加架构来解决这个问题

create table public.user(
  ...
);

好吧,一切正常,直到我尝试读取或写入数据库。我再次遇到 sql 语法异常,无法使用数据库。看来 sql 查询有些错误。

有什么建议可能出现问题吗?

最佳答案

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

@Entity
@Table(name = "users")
public class User extends Model {
    ...
}

在大多数情况下,在您的 Controller 和模型中,名称切换对您来说是透明的。唯一需要记住开关的地方是 RawSql查询。

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

关于sql - play20 ebean 生成的 sql 在 postgresql 上抛出语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12254804/

相关文章:

mysql - 用 MySQL 查询替换 html 样式属性

mysql - 将 MySQL 文件导入 Oracle SQL Developer

java - Heroku 上的 NoSuchElementException 但适用于 localhost

node.js - Heroku 上的服务器请求中断 (H18)

playframework-2.0 - Atlassian Confluence Webhook 未调用 Play!使用 Atlassian Connect 插件的方法

sql - MySQL连接问题

sql - 记录中不同列的计数

ruby-on-rails - 我应该拆分我的 Rails 应用程序吗?

playframework - 我应该使用 Play 框架 2.0 还是使用 Play 1.x

scala - elastic4s 和 play framework 2.2.1