什么';这个MySQL命令有什么问题?

什么';这个MySQL命令有什么问题?,mysql,Mysql,有人能告诉我怎么了吗 CREATE TABLE IF NOT EXISTS ifm.LinksTable ( file_system_id SMALLINT NOT NULL , inode_number BIGINT AUTO_INCREMENT , parent_inode_number BIG INT , virtual_name VARCHAR(256) , UNIQUE INDEX (parent_inode_number, virtual_name, fi

有人能告诉我怎么了吗

CREATE TABLE IF NOT EXISTS ifm.LinksTable (
  file_system_id SMALLINT NOT NULL ,
  inode_number BIGINT AUTO_INCREMENT  ,
  parent_inode_number BIG INT  ,
  virtual_name VARCHAR(256)  , 
  UNIQUE INDEX (parent_inode_number, virtual_name, file_system_id),
  inode_type CHAR(1) ,
  symbolic_link_inode BIGINT DEFAULT 0 ,
  current_version_number SMALLINT DEFAULT 0 ,
  number_of_links_to_file SMALLINT DEFAULT 0 ,
  PATH  varchar(1000),
  dir_level  INT ,
  time_last_modified INT ,
  time_last_accessed INT ,
  time_last_changed INT ,
  created_date INT ,
  permissions INT ,
  uid INT ,
  gid INT ,
  deleted_flag CHAR(1) , 
  PRIMARY KEY(file_system_id, inode_number)
);
错误是:

错误1064(42000):您的SQL语法有错误;检查 与右边的MySQL服务器版本相对应的手册 使用接近'BIG INT,virtual_name VARCHAR(256),UNIQUE'的语法 索引(第1行的父节点编号,virtua

请考虑我是MySQL命令的新手,虽然理解SQL .< /P> 这就是MySQL def文件的外观,我在其中添加了级别A和路径

cat ifmLinksTable.mysqldef
file_system_id,smallint not null
inode_number,bigint auto_increment
parent_inode_number,bigint
virtual_name,varchar(256) , unique index (parent_inode_number, virtual_name, file_system_id)
inode_type,char(1)
symbolic_link_inode,bigint default 0
current_version_number,smallint default 0
number_of_links_to_file,smallint default 0
time_last_modified,int
time_last_accessed,int
time_last_changed,int
created_date,int
permissions,int
uid,int
gid,int
deleted_flag,char(1), primary key(file_system_id, inode_number)

它应该是
BIGINT
,没有空格,但不能是
BIGINT

CREATE TABLE IF NOT EXISTS ifm.LinksTable (
  file_system_id SMALLINT NOT NULL ,
  inode_number BIGINT AUTO_INCREMENT  ,
  parent_inode_number BIGINT  ,
  virtual_name VARCHAR(256)  , 
  UNIQUE INDEX (parent_inode_number, virtual_name, file_system_id),
  inode_type CHAR(1) ,
  symbolic_link_inode BIGINT DEFAULT 0 ,
  current_version_number SMALLINT DEFAULT 0 ,
  number_of_links_to_file SMALLINT DEFAULT 0 ,
  PATH  varchar(1000),
  dir_level  INT ,
  time_last_modified INT ,
  time_last_accessed INT ,
  time_last_changed INT ,
  created_date INT ,
  permissions INT ,
  uid INT ,
  gid INT ,
  deleted_flag CHAR(1) , 
  PRIMARY KEY(file_system_id, inode_number)
);

我看到一些错误:parent\u inode\u number BIG INT=>parent\u inode\u number BIGINT(只是一些打字错误),另一个是VARCHAR:VARCHAR最大值是255,所以VARCHAR(256)和VARCHAR(1000)是不可能的


希望我能提供帮助!

这是
BIGINT
而不是
BIGINT
格式化查询,使其可读性会有所帮助。但是根据错误消息,
BIGINT
中没有空格。这不是问题,我没有触及BIGINT或BIGINT。错误发生在我尝试将目录级别和路径添加到现有queryQuick play时它似乎反对inode_数字是一个自动递增的数字,而不是键(尽管它是键的一部分)@Kickstart:我不明白,你是指我的问题吗?这不是问题,我没有触及。错误发生在我尝试将目录级别和路径添加到现有目录时query@kingsmasher1:嗯,此更正是基于您发布的错误堆栈。您没有报告其他问题。可能是在您执行tr时主键会失败ied定义了一个包含自动递增字段的组合,这是不允许的。你可以定义像
主键(inode\u编号)、唯一键(file\u system\u id,inode\u编号)
你怎么说varchar 1000不可能?有任何参考、链接、文档吗?有趣的是,他们似乎已经更新了这方面的英文手册页面(现在的限制是65535)但他们没有费心更新法语手册页面。是的,但这取决于他的mysql版本从你的URL——“长度可以在mysql 5.0.3之前指定为0到255,在5.0.3和更高版本中指定为0到65535。”我们使用的是5.0.67