SQL 语法错误 - 创建新数据库

Posted

技术标签:

【中文标题】SQL 语法错误 - 创建新数据库【英文标题】:SQL Syntax Error - creating new database 【发布时间】:2012-03-20 17:42:44 【问题描述】:

这是我的代码,目前在 USE 语句的第 3 行出现错误:

 CREATE DATABASE `jamestennisdbTest`;

 USE jamestennisdbTest;

  DROP TABLE IF EXISTS lessontbl;
  CREATE TABLE lessontbl (
  LessonID int(11) NOT NULL AUTO_INCREMENT,
  LessonName varchar(30) NOT NULL,
  LengthOfLesson int(11) NOT NULL,
  NoOfPupils int(11) NOT NULL,
  LocationID int(11) NOT NULL,
  `Type` varchar(45) NOT NULL,
  CostPerPupil float NOT NULL,
  TotalCost float NOT NULL,
  PRIMARY KEY (LessonID),
  UNIQUE KEY LessonID_UNIQUE (LessonID),
  KEY `fk_Location_lesson-location` (LocationID),
  CONSTRAINT `fk_Location_lesson-location` FOREIGN KEY (LocationID) REFERENCES         locationstbl (LocationID) ON DELETE NO ACTION ON UPDATE NO ACTION
) 

..它继续,但这不是错误出现的地方

..我正在尝试通过 Delphi ADOQuery 来做到这一点(尽管我认为这不是错误所在)

【问题讨论】:

我不认为 ado 查询允许您创建表,但可能是错误的...... 为什么是'delphi'标签?请使用 HeidiSQL 或 mysql 工作台等客户端应用程序尝试此操作,这样您可以确保语法正确。 我删除了 Delphi 标签,因为这个问题与 Delphi 本身无关。您使用 Delphi TADOQuery 的事实对所提出的问题毫无意义。 对不起,只是不知道 Delphi 的 ADOQuery 是否导致错误:S 【参考方案1】:

我相信'use'语句只用于mysql命令行客户端切换到另一个数据库。如果您想“使用”另一个数据库,您可能需要使用一些 API 调用或直接重新连接到新创建的数据库。

【讨论】:

谢谢!虽然有什么想法吗?还是我应该在创建数据库后关闭查询,然后将查询的其余部分作为新查询运行? 不,不幸的是,我不知道如何在 Delphi 中完成此操作。我假设您有一段代码实际上可以建立数据库连接。我建议你从那里开始。

以上是关于SQL 语法错误 - 创建新数据库的主要内容,如果未能解决你的问题,请参考以下文章

JDBC:使用 PreparedStatement 创建表,SQL 语法错误与否?

mysql数据库创建表的时候,出现您的SQL语法有错误

Apache ignit:SQL 语句创建表中的语法错误

您的 SQL 语法有错误...创建触发器时出错

SQL查询“近场语法错误”

休眠和使用数据库索引会在 CockroachDB 上创建 SQL 语法错误