SET sql_notes = 0; -- Temporarily disable the "Table already exists" warning
CREATE TABLE IF NOT EXISTS ...
SET sql_notes = 1; -- And then re-enable the warning again
declare
begin
execute immediate '
create table "TBL" ("ID" number not null)';
exception when others then
if SQLCODE = -955 then null; else raise; end if;
end;
/
9条答案
按热度按时间zd287kbt1#
在5.0.27中运行良好
我只得到一个警告(不是错误),指出表存在;
8hhllhi22#
如前所述,这是一个警告,而不是一个错误,但是(如果像我一样)你希望事情在没有警告的情况下运行,你可以禁用该警告,然后在完成后重新启用它。
6mw9ycah3#
可以使用以下查询在MySql中创建特定数据库的表。
7xllpg7q4#
7tofc5zh5#
我有一个问题的解决方案,可能也适用于您。我的数据库处于
DROP TABLE
失败的状态,因为它找不到表......但CREATE TABLE
也失败了,因为MySQL认为表存在。(这种状态很容易与IF NOT EXISTS子句混淆)。我最终找到了这个解决办法:
对于我来说,如果没有
sudo
,我会得到以下错误:(在OS X 10.6上运行)
bgibtngc6#
使用以下参数创建mysql连接。"'raise_on_warnings':False”。它将忽略警告。例如:
vbkedwbf7#
我在debian上遇到了与@CraigWalker类似的问题:我的数据库处于
DROP TABLE
失败的状态,因为它找不到表,但CREATE TABLE
也失败了,因为MySQL认为表仍然存在。所以损坏的表仍然存在,尽管当我在phpmyadmin中查找时它不在那里。我通过复制包含一个数据库的整个文件夹来创建此状态,该数据库包含一些
MyISAM
表和一些InnoDB
表(this不建议使用!)
所有InnoDB表在phpmyadmin中的新数据库
test
中都不可见。sudo mysqladmin flush-tables
也没有帮助。**我的解决方案:**我不得不删除带有
drop database test
的新测试数据库,并使用mysqldump
复制它:jljoyd4f8#
好吧,有很多答案已经提供和很多是有意义的。
有些人提到它只是警告,有些人给出了一个临时的方法来禁用警告。所有这些都可以工作,但***当数据库中的事务数量很高时会增加风险***。
我今天遇到了类似的情况,这是我提出的问题...
这很简单,如果在运行查询时出现异常,它将被抑制,您可以对
SQL
或Oracle
使用相同方法mum43rcc9#
如果有人在导出Phpmyadmin后遇到此错误,请使用自定义选项并添加“drop tables”语句来清除此错误。