gpt4 book ai didi

postgresql - 从 MySQL 迁移时在 PostgreSQL 中创建表时出错

转载 作者:行者123 更新时间:2023-11-29 12:58:51 33 4
gpt4 key购买 nike

我正在将我的数据库从 MySQL 迁移到 PostgreSQL。在创建表时我遇到了一个我无法解决的错误。我的 MySQL 查询是这样的。MYSQL查询

  CREATE TABLE `configuration` (
`Name` varchar(300) NOT NULL,
`Value` varchar(300) default NULL,
`CType` char(1) default NULL,
`Size` int(11) default NULL,
`CGroup` varchar(50) default NULL,
`RestartReq` char(1) NOT NULL default 'Y',
`Display` char(1) NOT NULL default 'Y',
PRIMARY KEY (`Name`),
KEY `CType` (`CType`),
CONSTRAINT `configuration_ibfk_1` FOREIGN KEY (`CType`) REFERENCES `conftype` (`CType`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin`

PostgreSQL 查询

  CREATE TABLE configuration (
Name varchar(300) PRIMARY KEY,
Value varchar(300) default NULL,
CType char(1) default NULL,
Size integer default NULL,
CGroup varchar(50) default NULL,
RestartReq char(1) NOT NULL default 'Y',
Display char(1) NOT NULL default 'Y',
KEY CType (CType),
CONSTRAINT `configuration_ibfk_1` FOREIGN KEY (CType) REFERENCES conftype (CType)
)

使用 运行文件
psql -h localhost -p 5432 -U postgres -f ps.sql testdb
获取错误

  psql:ps.sql:40: ERROR:  syntax error at or near "(" at character 287
psql:ps.sql:40: LINE 9: KEY CType ('CType'),

最佳答案

来自MySQL documentation :

KEY is normally a synonym for INDEX.

在 PostgreSQL 中,您必须与表分开创建索引:

CREATE TABLE configuration (
name varchar(300) PRIMARY KEY,
value varchar(300),
ctype char(1),
size integer,
cgroup varchar(50),
restartreq boolean NOT NULL DEFAULT true,
display boolean NOT NULL DEFAULT true,
CONSTRAINT configuration_ibfk_1 FOREIGN KEY (ctype) REFERENCES conftype (ctype)
);

CREATE INDEX conf_key ON configuration(ctype);

其他几点:

  • PostgreSQL 标识符(主要是表名和列名)不区分大小写,除非用双引号引起来。标准方法是将标识符放在小写字母中,将关键字放在大写字母中。
  • 出于性能原因,使用 varchar(300) 作为 PRIMARY KEY 通常不是一个好主意。考虑添加 serial 类型。
  • 当未指定任何内容时,列的默认值为NULL,因此无需指定DEFAULT NULL
  • PostgreSQL 有一个boolean 数据类型。

关于postgresql - 从 MySQL 迁移时在 PostgreSQL 中创建表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669306/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com