这让我很生气,我正处在我想我必须错过一些非常明显的事情的地步。我们正在使用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的新思维告诉我为什么我会错过这个显而易见的东西!
答案 0 :(得分:0)
我想我已经解决了我的问题。希望能够在MonetDB上学习的人可能会发现这一点并为自己省力。
int的语法不同。
而不是:
int(11)
您必须输入:
int
一旦我从我的create语句中的每个int中删除了(11),它就会运行。