这让我发疯了,而我正想着我一定只是想念一些非常明显的东西。我们正在使用SQiurrel设置MonetDB环境。尽管我面临的挑战是将所有这些都连接起来并使驱动程序正常工作,但是事实证明它正在运行,我可以看到数据库的所有荣耀。

我在MySQL中有一个数据库需要重建,因此我只生成了代码:

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的新鲜事物就能告诉我为什么我错过了显而易见的事情!

最佳答案

我想我已经解决了我的问题。希望正在学习有关MonetDB的人可以发现这一点并节省一些精力。

int的语法不同。

而不是:

int(11)

您必须输入:
int

在我的create语句中从每个int删除(11)后,它便开始运行。

关于sql - 在MonetDB中创建表时出现语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26341286/

10-11 05:14