从MySQL迁移时在PostgreSQL中创建表时出错
我正在将我的数据库从MySQL迁移到PostgreSQL。在创建表时,我遇到了一个无法解决的错误。我的MySQL查询是这样的。 MYSQL查询从MySQL迁移时在PostgreSQL中创建表时出错,postgresql,Postgresql,我正在将我的数据库从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` va
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-p5432-U postgres-f ps.sqltestdb
错误获取
psql:ps.sql:40: ERROR: syntax error at or near "(" at character 287
psql:ps.sql:40: LINE 9: KEY CType ('CType'),
从:
键通常是索引的同义词
在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)
主键通常不是一个好主意。考虑添加<代码>系列< /代码>类型。
- 未指定任何内容时,列的默认值为
,因此无需指定NULL
defaultnull
- PostgreSQL的数据类型为
boolean