postgresql - 在 Postgres 中使用带空格的列名的语法错误
问题描述
我正在尝试在架构下创建表。但是,我收到以下错误。
[代码:0,SQL 状态:42601] 错误:“VARCHAR”位置或附近的语法错误:120 [脚本位置:120 - 123]
我无法调试语法错误在哪里。您可以在下面找到 postgres 查询。
CREATE SCHEMA IF NOT EXISTS ebi_mut_db;
CREATE TABLE IF NOT EXISTS ebi_mut_db.version_info (
version INT,
download_date DATE,
download_url TEXT,
responsible TEXT);
CREATE TABLE IF NOT EXISTS ebi_mut_db.mutations_affecting_interactions (
Feature AC NOT NULL VARCHAR (20),
Feature short label VARCHAR (50),
Feature range(s) VARCHAR (50),
Original sequence CHAR (50),
Resulting sequence CHAR (50),
Feature type VARCHAR (100),
Feature annotation VARCHAR (255),
Affected protein AC VARCHAR (100),
Affected protein symbol VARCHAR (100),
Affected protein full name VARCHAR (100),
Affected protein organism VARCHAR (100),
Interaction participants VARCHAR (255),
PubMedID VARCHAR (100),
Figure legend VARCHAR (50),
Interaction AC VARCHAR (50),
PRIMARY KEY (Feature AC);
谢谢
解决方案
列名中不能有空格。如果你真的想让你的生活变得更艰难,那么你必须引用它们,例如,"Feature AC"
而不是Feature AC
NOT NULL
属性在数据类型之后,
"Feature AC" VARCHAR (20) NOT NULL,
您还缺少)
CREATE TABLE 语句末尾的关闭:
请忘记该char
类型存在。它绝对没有任何优势,但有一些令人讨厌的惊喜。
所以整个陈述应该是:
CREATE TABLE IF NOT EXISTS ebi_mut_db.mutations_affecting_interactions
(
"Feature AC" VARCHAR (20) NOT NULL,
"Feature short label" VARCHAR (50),
"Feature range(s)" VARCHAR (50),
"Original sequence" VARCHAR (50),
"Resulting sequence" VARCHAR (50),
"Feature type" VARCHAR (100),
"Feature annotation" VARCHAR (255),
"Affected protein AC" VARCHAR (100),
"Affected protein symbol" VARCHAR (100),
"Affected protein full name" VARCHAR (100),
"Affected protein organism" VARCHAR (100),
"Interaction participants" VARCHAR (255),
"PubMedID" VARCHAR (100),
"Figure legend" VARCHAR (50),
"Interaction AC" VARCHAR (50),
PRIMARY KEY (Feature AC)
);
但是你应该,真的,真的重新考虑你的列名。我强烈建议使用这样的东西:
CREATE TABLE IF NOT EXISTS ebi_mut_db.mutations_affecting_interactions
(
feature_ac varchar (20) not null,
feature_short_label varchar (50),
feature_range varchar (50),
original_sequence varchar (50),
resulting_sequence varchar (50),
feature_type varchar (100),
feature_annotation varchar (255),
affected_protein_ac varchar (100),
affected_protein_symbol varchar (100),
affected_protein_full_name varchar (100),
affected_protein_organism varchar (100),
interaction participants varchar (255),
pub_med_id varchar (100),
figure_legend varchar (50),
interaction_ac varchar (50),
primary key (feature ac)
);
推荐阅读
- go - 无法从 GitHub 下载 Go 包
- bash - 如何连接包含空格的字符串变量?
- mule4 - Mule 4:设计:如何在 Mule 4 中处理数据[文件/数据库记录]而不会出现“内存不足”错误?
- xamarin - 使用 plugin.media.crossmedia 在 xamarin 表单 ios 中发生 DirectoryNotFoundException
- asp.net-core - 在 ASPNET Core 网站中编辑 CoreUI 的 SASS 文件
- sql-server - 在 Ubuntu 警告:无法加载 sqljdbc_auth.dll 原因,在尝试从 SQL 数据库中提取数据到 Elasticsearch
- javascript - JQUERY - 获取值并以数组值显示(如下所示)
- vb.net - 我如何知道 ADODB 是否使用 vb.net(类、模块和表单)连接到我的数据库
- reactjs - 由于 docker build 中的 TypeScript 错误,npm run build 失败
- xslt - 使用 XSLT 在 PDF 文件中编码徽标