首页 > 解决方案 > 为什么 Diesel 在列指定长度时无法迁移 PostgresSQL 数据库?

问题描述

当我使用 生成迁移时diesel migration generate customers,如果up.sql迁移文件夹中的文件不包含用于列长度的括号:

CREATE TABLE customers (
  id SERIAL PRIMARY KEY,
  name VARCHAR NOT NULL,
  identity VARCHAR NOT NULL,
  hometown VARCHAR NOT NULL,
  age INT NOT NULL
)

当我运行时diesel migration run --database-url=postgres://<info>,它成功迁移了数据库。

为什么会出现以下情况:

CREATE TABLE customers (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  identity VARCHAR(255) NOT NULL,
  hometown VARCHAR(255) NOT NULL,
  age INT(11) NOT NULL
)

引发错误:

Failed with: syntax error at or near "("

我的 SQL 并不令人惊讶,因此我直接使用 ORM,但我相信 SQL 查询都是完全有效的,我不知道去哪里调试。

标签: sqlpostgresqlrustrust-diesel

解决方案


推荐阅读