在MonetDB中创建表时出现语法错误

时间:2014-10-13 13:33:52

标签: sql monetdb

这让我很生气,我正处在我想我必须错过一些非常明显的事情的地步。我们正在使用SQiurrel建立MonetDB环境。我虽然面临的挑战是如何连接并让驱动程序工作,但事实证明它正在运行,我可以看到数据库的所有荣耀。

我在MySQL中有一个DB需要重建,所以我只生成了代码:

CREATE TABLE "some_database"."some_table" (
  key int(11) NOT NULL AUTO_INCREMENT,
  column_1 varchar(10) DEFAULT NULL,
  column_2 varchar(10) DEFAULT NULL,
  column_3 varchar(10) DEFAULT NULL,
  column_4 varchar(10) DEFAULT NULL,
  column_5 varchar(10) DEFAULT NULL,
  column_6 int(11) DEFAULT NULL,
  column_7 decimal(10,2) DEFAULT NULL,
  column_8 decimal(10,2) DEFAULT NULL,
  column_9 int(11) DEFAULT NULL,
  PRIMARY KEY (key)
) ENGINE=InnoDB AUTO_INCREMENT=20189170 DEFAULT CHARSET=utf8;

唯一的区别是我更改了列名和表名。我不确定这是否完全兼容一个开始,但我想我会绕着它解决错误。第一个是关于使用`。 MonetDB似乎不喜欢你。

我删除了这些,现在我得到了:

Error: syntax error, unexpected '(', expecting ')' or ',' in: "create table "some_database"."some_table" (
SQLState:  42000
ErrorCode: 0
Error:   fact_key int("
SQLState:  22000
ErrorCode: 0 

对于“关键”栏,我也让int(11)变成红色并告诉我我有一个“EOF预期”

如果我快速输入自己的CREATE TABLE语句,我可以创建一个类型为varchar的表。只要我添加一个int类型,它就会再次发疯。

例如,我刚刚在MonetDB中创建了这个表:

CREATE TABLE "some_database"."some_table"
(
something varchar(10),
something2 varchar(10)
); 

工作得很好。只要我添加一个int类型:

CREATE TABLE "some_database"."some_table"
(
something varchar(10),
something2 varchar(10),
something3 int(10)
);

它又有点精神了:

Error: syntax error, unexpected '(', expecting ')' or ',' in: "create table "some_database"."some_table"
SQLState:  42000
ErrorCode: 0
Error: (
SQLState:  22000
ErrorCode: 0
Error: something varchar(10),
SQLState:  22000
ErrorCode: 0
Error: something2 varchar(10),
SQLState:  22000
ErrorCode: 0
Error: something3 int("
SQLState:  22000
ErrorCode: 0

所以我的问题是我设置错了什么? MonetDB似乎运行良好,我可以在SQiurrel中探索一切。我可以使用varchar创建基本表,但是只要我引入一个int,计算机就会说不。我也不明白EOF是什么意思?我以为它期待一个,但它有吗?

提前致谢。我希望我只需要一个知道MonetDB的新思维告诉我为什么我会错过这个显而易见的东西!

1 个答案:

答案 0 :(得分:0)

我想我已经解决了我的问题。希望能够在MonetDB上学习的人可能会发现这一点并为自己省力。

int的语法不同。

而不是:

int(11)

您必须输入:

int

一旦我从我的create语句中的每个int中删除了(11),它就会运行。