Netbeans 如果存在,则在Derby中无法识别

Netbeans 如果存在,则在Derby中无法识别,netbeans,derby,Netbeans,Derby,导致错误 DROP TABLE IF EXISTS Pose ; 我使用默认的Derby示例数据库从NetBeans 7.3内部运行这个 Derby目前不支持IF EXISTS用于声明表的MySQL 6.0语法如下: Error code -1, SQL state 42X01: Syntax error: Encountered "EXISTS" at line 1, column 15. CREATE TABLE [IF NOT EXISTS] tableName ... 用于删除表

导致错误

DROP TABLE IF EXISTS Pose ;

我使用默认的Derby示例数据库从NetBeans 7.3内部运行这个

Derby目前不支持IF EXISTS

用于声明表的MySQL 6.0语法如下:

Error code -1, SQL state 42X01: Syntax error: Encountered "EXISTS" at line 1, column 15. 
CREATE TABLE [IF NOT EXISTS] tableName ...
用于删除表的MySQL语法如下:

Error code -1, SQL state 42X01: Syntax error: Encountered "EXISTS" at line 1, column 15. 
CREATE TABLE [IF NOT EXISTS] tableName ...

这些子句是MySQL扩展,不属于ANSI/ISO SQL标准的一部分。这一功能可能是MySQL特有的:我找不到任何类似的文档,用于Derby、Postgres、Oracle或DB2。

我能找到的最佳替代方法是查询系统表,查看该表是否存在

从sys.systables中选择count(*),其中tablename='YOUR_TABLE_NAME'

我在删除存储过程时遇到了类似的问题。可以使用以下语句查询存储过程


从sys.sysalias中选择count(*),其中alias='YOUR_storage_PROCEDURE_NAME'

是否尝试创建表?如果是,则应执行以下操作:

DROP TABLE [IF EXISTS] tableName ...

记住对传递到
databaseMetadata.getTables(…)中的表名使用所有大写字母

如果有人希望删除并在使用Spring测试框架运行的sql文件中创建一个表,请检查答案,确保在调用drop table时,在该表不存在时不会引发异常。

这是mysql还是apache derby?它们不是同一回事,也不支持完全相同的sql语言。I不知道!这是apache derby。它是否支持if exists的某些变体?