3

这让我发疯,我正处于我认为我必须错过一些非常明显的东西的地步。我们正在使用 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 的新思维来告诉我为什么我错过了显而易见的事情!

4

1 回答 1

0

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

int 的语法是不同的。

而不是:

int(11)

您只需键入:

int

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

于 2014-10-13T14:50:44.200 回答