4

我正在尝试在 Filemaker -> MySQL 转换脚本中使用此查询。表创建步骤直接来自 phpMyAdmin 导出,我在 DROP 语句中添加。

如果存在工件,则删除表;

如果不存在“工件”则创建表
  (
     `aid` INT(11) UNSIGNED NOT NULL auto_increment,
     `入藏号` TEXT NOT NULL,
     `name` TEXT NOT NULL,
     `period 1` TEXT NOT NULL,
     `period 3 date` TEXT NOT NULL,
     `视觉描述` TEXT NOT NULL,
     `religion 1` TEXT NOT NULL,
     `dimen 1 number` DECIMAL(10, 2) NOT NULL,
     `dimen 2 number` DECIMAL(10, 2) NOT NULL,
     `dimen 3 number` DECIMAL(10, 2) NOT NULL,
     `dimen 1 type` TEXT NOT NULL,
     `dimen 2 type` TEXT NOT NULL,
     `dimen 3 type` TEXT NOT NULL,
     `材料 2` TEXT NOT NULL,
     `制造过程 2` TEXT NOT NULL,
     `重量` INT(11) 非空,
     `测量备注` TEXT NOT NULL,
     `munsell 颜色信息` TEXT NOT NULL,
     `reproduction` TEXT NOT NULL,
     `复制说明` TEXT NOT NULL,
     `发布的描述` TEXT NOT NULL,
     `学术笔记` TEXT NOT NULL,
     `参考书目` TEXT NOT NULL,
     `comparanda` TEXT NOT NULL,
     `展览标签` TEXT NOT NULL,
     `艺术家` TEXT NOT NULL,
     `spurlock loc 3` TEXT NOT NULL,
     `考古数据` TEXT NOT NULL,
     `credit line` TEXT NOT NULL,
     `出处` TEXT NOT NULL,
     `博物馆奉献` TEXT NOT NULL,
     `spurlock status` TEXT NOT NULL,
     `public description` TEXT NOT NULL,
     `工作集 5 wb` TEXT NOT NULL,
     `图片来源` TEXT NOT NULL,
     `cm mec ma` TEXT NOT NULL,
     `webprivate` 文本不为空,
     `spurlock loc 2` TEXT NOT NULL,
     `hiresimagecheck` 文本不为空,
     主键(`aid`),
     FULLTEXT KEY `name` (`name`),
     FULLTEXT KEY `accession number` (`accession number`, `name`, `period 1`,
     `视觉描述`,`材料2`,`已发表的描述`,`艺术家`,
     `信用额度`),
     FULLTEXT KEY `accession number_2` (`accession number`),
     FULLTEXT KEY `visual description` (`visual description`),
     FULLTEXT KEY `published description` (`published description`)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在文化,则删除表;

如果不存在“文化”则创建表
  (
     `cid` INT(10) UNSIGNED NOT NULL auto_increment,
     `culture` VARCHAR(255) NOT NULL,
     主键(`cid`),
     唯一键`文化`(`文化`)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在地理城市,则删除表;

如果不存在 `geocity` 则创建表
  (
     `gid` INT(10) UNSIGNED NOT NULL auto_increment,
     `city` VARCHAR(255) NOT NULL,
     主键(`gid`),
     唯一键“城市”(“城市”)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在地理大陆,则删除表;

如果不存在`geocontinent`,则创建表
  (
     `gid` INT(10) UNSIGNED NOT NULL auto_increment,
     `continent` VARCHAR(255) NOT NULL,
     主键(`gid`),
     唯一键“大陆”(“大陆”)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在地理国家,则删除表;

如果不存在`geocountry`,则创建表
  (
     `gid` INT(10) UNSIGNED NOT NULL auto_increment,
     `country` VARCHAR(255) NOT NULL,
     主键(`gid`),
     唯一键“国家”(“国家”)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

DROP TABLE IF EXISTS geolocality;

如果不存在`geolocality`,则创建表
  (
     `gid` INT(10) UNSIGNED NOT NULL auto_increment,
     `locality` VARCHAR(255) NOT NULL,
     主键(`gid`),
     唯一键`locality`(`locality`)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在地理区域,则删除表;

如果不存在 `georegion` 则创建表
  (
     `gid` INT(10) UNSIGNED NOT NULL auto_increment,
     `region` VARCHAR(255) NOT NULL,
     主键(`gid`),
     唯一键 `region` (`region`)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在名称类别,则删除表;

如果不存在`nomcategory`,则创建表
  (
     `nid` INT(10) UNSIGNED NOT NULL auto_increment,
     `category` VARCHAR(255) NOT NULL,
     主键(`nid`),
     唯一键 `category` (`category`)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在 nomclassification 则删除表;

如果不存在“nomclassification”则创建表
  (
     `nid` INT(10) UNSIGNED NOT NULL auto_increment,
     `分类` VARCHAR(255) NOT NULL,
     主键(`nid`),
     唯一键`分类`(`分类`)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

如果存在 nomsubclassification 则删除表;

如果不存在“nomsubclassification”,则创建表
  (
     `nid` INT(10) UNSIGNED NOT NULL auto_increment,
     `subclassification` VARCHAR(255) NOT NULL,
     主键(`nid`),
     UNIQUE KEY `subclassification` (`subclassification`)
  )
引擎=myisam
默认字符集=latin1
自动增量=1;

但是,当我尝试执行此查询时,我得到:

MySQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在“创建表如果不存在 `artifacts` 附近使用
  (
     `aid` IN' 在第 3 行

语法对我来说都很好,有人能发现错误吗?我使用的唯一 SQL 格式化程序不会报告任何错误。

4

2 回答 2

7

你的脚本工作正常。问题是您执行它的方式(客户端将期望通过查询而不是整个脚本进行查询)或者您已将分隔符更改为其他内容;

DELIMITER ;
于 2012-08-17T16:36:16.657 回答
-1
  1. 您的用户名是否有权创建表?
  2. 您是否指出要使用哪个数据库?我通常会

    USE databasename;
    
    CREATE TABLE tablename (
    name_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
     (etc....)
    );
    

等等

于 2012-08-17T16:36:34.223 回答