Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jdbc的表中包含两个外键?_Java_Mysql_Jdbc_Foreign Keys - Fatal编程技术网

Java 如何在jdbc的表中包含两个外键?

Java 如何在jdbc的表中包含两个外键?,java,mysql,jdbc,foreign-keys,Java,Mysql,Jdbc,Foreign Keys,我在EclipseIDE中使用JDBC,我想在表3中放置两个外键,一个是引用表1中的主键,另一个是引用表2中的主键。当我只为任何引用表1或表2设置一个外键约束时,它可以正常工作,但当我包含两个外键约束时,它会给我sql异常,如下所述: java.sql.SQLSyntaxErrorException:您的sql中有一个错误 句法;检查与MySQL服务器版本对应的手册 有关使用near'外键(T2)引用的正确语法 第1行的表2(T2)” 首先,这实际上是一个MySQL问题,与Java/JDBC无关

我在EclipseIDE中使用JDBC,我想在表3中放置两个外键,一个是引用表1中的主键,另一个是引用表2中的主键。当我只为任何引用表1或表2设置一个外键约束时,它可以正常工作,但当我包含两个外键约束时,它会给我sql异常,如下所述:

java.sql.SQLSyntaxErrorException:您的sql中有一个错误 句法;检查与MySQL服务器版本对应的手册 有关使用near'外键(
T2
)引用的正确语法 第1行的表2(
T2
)”


首先,这实际上是一个MySQL问题,与Java/JDBC无关。其次,更重要的是,您似乎没有使用正确的语法,这将是

CREATE TABLE TableName ( 
    T1 varchar(50),
    T2 varchar(50),
    foreign key(T1) references Table1(T1),
    foreign key(T2) references Table2(T2) 
);
为您的代码格式化后,它将如下所示:

String createString = "CREATE TABLE " + this.tableName + " ( " +
    "   T1 varchar(50)," +
    "   T2 varchar(50)," +
    "   foreign key(T1) references Table1(T1)," +
    "   foreign key(T2) references Table2(T2));";

您的
CREATE TABLE
语句的项目列表中的每个项目后面都缺少逗号。

我建议您提供一个更完整的代码示例。似乎您没有重新分配
this.tableName
,也没有在每次迭代之间执行语句。我们可以假设这就是您所做的,但是如果没有更完整的代码,您可能会遇到与从您的描述中推断出的问题不同的问题。是的,这种语法很有效,非常感谢,但在此之前还应该有一个加号(+)。tableName:)当然我接受它,我的意思是,我是否必须单击某些内容才能将您的答案显示为正确答案?
String createString = "CREATE TABLE " + this.tableName + " ( " +
    "   T1 varchar(50)," +
    "   T2 varchar(50)," +
    "   foreign key(T1) references Table1(T1)," +
    "   foreign key(T2) references Table2(T2));";