Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 如何对mysql中的两个表进行FK约束,一个表使用InnoDB,另一个表使用MyISAM_Java_Mysql_Mysql Error 1005 - Fatal编程技术网

Java 如何对mysql中的两个表进行FK约束,一个表使用InnoDB,另一个表使用MyISAM

Java 如何对mysql中的两个表进行FK约束,一个表使用InnoDB,另一个表使用MyISAM,java,mysql,mysql-error-1005,Java,Mysql,Mysql Error 1005,原因:liquibase.exception.jdbception: Error executing SQL ALTER TABLE `User` ADD CONSTRAINT `fk_user_location` FOREIGN KEY (`location_id`) REFERENCES `Location`(`id`) ON DELETE CASCADE: Caused By: Error executing SQL ALTER TABLE `UserLocation`

原因:liquibase.exception.jdbception:

Error executing SQL ALTER TABLE `User` ADD CONSTRAINT `fk_user_location` FOREIGN KEY (`location_id`) REFERENCES `Location`(`id`) ON DELETE CASCADE:
          Caused By: Error executing SQL ALTER TABLE `UserLocation` ADD CONSTRAINT `fk_user_location_location_id` FOREIGN KEY (`location_id`) REFERENCES `Location`(`id`) ON DELETE CASCADE:
          Caused By: Can't create table 'usiapp_db.#sql-399a_177a7' (errno: 150)

你不能。如果要在MyISAM表中创建外键,必须将其转换为InnoDB:

ALTER TABLE MyIsamTable ENGINE=InnoDB;

您可以动态执行此操作,而无需关闭数据库。

您不能。如果要在MyISAM表中创建外键,必须将其转换为InnoDB:

ALTER TABLE MyIsamTable ENGINE=InnoDB;

您可以动态执行此操作,而无需关闭数据库。

这很有用。但如果我想在我的表列上添加空间索引呢。因为InnoDB不支持空间索引。所以,如果我使用InnoDB创建alter table,我必须释放空间索引。所以我们可以同时使用空间索引和FK!目前不能同时拥有外键和空间索引,这太糟糕了。所以你必须选择。有关一些可能的解决方法,请参见。这很有用。但如果我想在我的表列上添加空间索引呢。因为InnoDB不支持空间索引。所以,如果我使用InnoDB创建alter table,我必须释放空间索引。所以我们可以同时使用空间索引和FK!目前不能同时拥有外键和空间索引,这太糟糕了。所以你必须选择。有关一些可能的解决方法,请参阅。