postgresql - Haskell 持久不同步

标签 postgresql yesod

我正在使用 Yesod 和 Persistent 创建博客(真的很原创,是吗?)。

在某些时候,我更改了模型,Persistent 说我尝试做的事情不安全,我必须手动进行。它说:

Database migration: manual intervention required.
The following actions are considered unsafe:

    ALTER TABLE "article" DROP COLUMN "date";

所以我继续在 Postgres 中运行它。事实上,我已经删除了表“article”,我得到了错误:

Migrating: CREATe TABLE "article" 
      ( "id" SERIAL PRIMARY KEY UNIQUE,
        "title" VARCHAR NOT NULL,
        "author" VARCHAR NOT NULL,
        "day" DATE NOT NULL DEFAULT DATE,
        "content" VARCHAR NOT NULL)

devel.hs: SqlError { sqlState = "42703"
                   , sqlExecStatus = FatalError
                   , sqlErrorMsg = "column \"date\" does not exist"
                   , sqlErrorDetail = ""
                   , sqlErrorHint = ""
                   }

这是模式当前的样子(使用 Persistent 定义):

-- Blog Article
Article
  title   Text
  author  Text
  day     Day default=DATE
  content MathJax 

这是怎么回事?我需要做什么才能使 Postgres 和 Persistent 恢复同步?

最佳答案

请将您的创建表代码更改为:

    digoal=# CREATE TABLE "article" 
      ( "id" SERIAL PRIMARY KEY UNIQUE,
        "title" VARCHAR NOT NULL,
        "author" VARCHAR NOT NULL,
        "day" DATE NOT NULL DEFAULT current_date,
        "content" VARCHAR NOT NULL);
    CREATE TABLE

PostgreSQL 没有 DATA 函数,所以你可以使用 current_date 代替。

关于postgresql - Haskell 持久不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23004528/

相关文章:

java - 如何在 spring 中查询 postgres 整数数组

postgresql - 使用 ST_DWithin 查询 PostgreSQL 表中 400 英里范围内的几何点对

haskell - 带有 Keter 和 Cloudflare 的免费 SSL 的 Yesod 网络应用程序

haskell - 请解释类型同义词

haskell - 从 Yesod 提供 CSS 文档

postgresql - 如何使用 Postgres 16 64 位连接到 Delphi 11.3 CE 32 位?

Postgresql 在逻辑复制中跳过事务

haskell - Yesod的长期投票

haskell - 什么样的库组合可以提供 2D 图形(可选)在 Web 应用程序中? ( haskell )

node.js - 将 Postgresql 模式与 Sequelize 结合使用