MySQL多表创建语法帮助?

MySQL多表创建语法帮助?,mysql,scripting,create-table,Mysql,Scripting,Create Table,我正在尝试编写一个MySQL脚本来创建几个表。我有: CREATE TABLE `DataBase1`.`tbl_this`( ... ); CREATE TABLE `DataBase1`.`tbl_that`( ... ); ... (14 more) ... 但是,只执行第一个CREATE TABLE语句。我没有语法错误。呃,我是否缺少了MSSQL的等价物GO?我在这里做错了什么;如何让这个婴儿运行所有的表格?试试这个: 使用数据库名称 创建表a。。; 创建表b。。; 创建表c 表是否相

我正在尝试编写一个MySQL脚本来创建几个表。我有:

CREATE TABLE `DataBase1`.`tbl_this`(
...
);
CREATE TABLE `DataBase1`.`tbl_that`(
...
);
... (14 more) ...
但是,只执行第一个
CREATE TABLE
语句。我没有语法错误。呃,我是否缺少了MSSQL的等价物
GO
?我在这里做错了什么;如何让这个婴儿运行所有的表格?

试试这个:

使用数据库名称

创建表a。。; 创建表b。。;
创建表c

表是否相互引用(例如主键等)?表是按顺序创建的,因此如果第二个表引用的是尚未创建的表,则该表将失败。

创建表语法看起来不错。您用来执行SQL的工具可能只是执行第一条语句。

您是如何执行此脚本的

如果您试图以编程方式运行它,您应该知道MySQL API在默认情况下一次只执行一条语句。您不能用分号将它们串在一起,然后期望它运行所有语句

您可以在循环中单独执行每个
createtable
语句,或者通过将脚本作为输入提供给
mysql
命令行客户端来运行脚本

在应用程序中编写通用脚本运行器类并不像看上去那么容易,因为完整的脚本语法包含许多特殊情况


请参阅我对的回答中的角落案例示例。

如何执行脚本? 如果从命令行执行此操作,则应如下所示:

mysql -u[username] -p[password] --database DataBase1 < scriptname.sql
mysql-u[username]-p[password]——数据库数据库1
更糟。没有创建任何表。我可以确认这确实创建了表A,但没有创建表B或表C。这正是问题所在,MySQL查询浏览器只处理第一个命令。我会标记@Florian_Gutmann,因为他是第一个,可以使用积分(相比48K…天哪!你在和双向飞碟比赛吗?),必须和代表钓上新的鱼:)哈哈!“没问题,”弗洛里安的确是第一个。是的,MySQL查询浏览器的查询界面就像在应用程序代码中运行一条语句,因为它只运行一条语句。查询浏览器还应该有一个“运行SQL脚本…”菜单选项,您可以使用它从一个文件执行多个语句。MySQL的脚本接口一次只执行一个命令。这是一件好事:它减少了SQL注入的自动化影响。有些环境具有多个语句的接口,例如在C API级别使用
MYSQL\u OPTION\u MULTI\u statements\u ON
或在PHP中使用
mysqli\u MULTI\u query