标签: sql-drop

使用外键删除列

在我的mysql数据库上使用inno_db引擎,

我有一张带外键的桌子.我想删除列(当然还有外键和相关索引 - 我不需要整列!)

现在,简单地删除它会产生错误:一般错误:1025错误将'.\ road_dmy#sql-19d8_2be'重命名为'.\ road_dmy\contact'(错误号:150)

听起来这是一个众所周知的问题. http://bugs.mysql.com/bug.php?id=15317

但无论如何,我应该怎么做才能放弃这个专栏?我非常确定没有人会使用这个DB

(顺便说一下,我怎么知道上面神秘错误信息的真实细节?)

mysql mysql-error-1025 sql-drop

5
推荐指数
1
解决办法
4682
查看次数

Python sqlite3参数化drop table

我在python中删除sqlite3表时遇到问题.我正在使用标准sqlite3模块.

self.conn = sqlite3.connect(...)

sql = """ drop table ? """
self.conn.execute( sql, (u'table_name',) )
Run Code Online (Sandbox Code Playgroud)

给我 OperationalError: near "?": syntax error

当我sql改为:

sql = """ drop table table_name """
Run Code Online (Sandbox Code Playgroud)

它工作正常.

python sqlite parameterized-query sql-drop

5
推荐指数
1
解决办法
2154
查看次数

SQL drop table并重新创建并保留数据

在我们的原始设计中,我们搞砸了表中的外键约束.现在表中充满了数据,我们无法在不删除表中的所有记录的情况下更改它.我能想到的唯一解决方案是创建一个备份表并将所有记录放在那里,然后删除所有记录,更改表并开始添加它们.还有其他(更好)的想法吗?谢谢!

使用MS SQL Server

sql sql-server foreign-keys sql-drop

5
推荐指数
3
解决办法
4万
查看次数

我可以使用hibernate本机SQL查询删除表

我试图使用hibernate本机SQL(createSQLQuery)语句删除临时表.这是代码:

session.createSQLQuery("DROP TABLE tmp_dummy_table").executeUpdate();
Run Code Online (Sandbox Code Playgroud)

但它会让我失望:

SQL Error: 1003, SQLState: 24000
ORA-01003: no statement parsed

Exception while creating tmp_dummy_table tableorg.hibernate.exception.GenericJDBCException: org.hibernate.exception.GenericJDBCException:could not execute query
  at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
        at org.hibernate.loader.Loader.doList(Loader.java:2223)
        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
        at org.hibernate.loader.Loader.list(Loader.java:2099)
        at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
        at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
        at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
        at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152) ....

你能否在这段代码中说明什么错误?

java hibernate sql-drop

5
推荐指数
1
解决办法
6339
查看次数

sqlite drop index非常慢

我有一个大约75 GB的sqlite数据库.在数据库上创建索引需要将近4个小时.索引后,文件大小约为100 GB.

通常,我必须修改(插入/删除/更新)大块(几GB)的数据.截至目前,我正在修改表之前删除索引.修改完成后,将重新创建索引.

删除索引需要花费大量时间(与创建索引的顺序相同).

在一些非常特殊的情况下(当需要重新生成整个数据时),我可以写入新的数据库文件并将其替换为原始数据库文件.这个策略并不要求我放弃指数.

如果我不能只切换数据库文件,我该怎么做才能加快索引删除?欢迎任何建议/想法.

这是我认为单个文件数据库的局限之一.如果表/索引存储在单独的文件中,那么这些文件可以简单地标记为已删除.

sqlite indexing sql-drop

5
推荐指数
0
解决办法
627
查看次数

是否有一种更简单,更快捷的方法删除具有对其他表的外键引用的表?

我有一个新表,该表具有对许多现有表的外键引用。首次创建新表时,我通过以下方式创建外键:

ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([SectionDatabaseID])
REFERENCES [dbo].[Section] ([SectionDatabaseID])

ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([TermDatabaseID])
REFERENCES [dbo].[Term] ([TermDatabaseID])
Run Code Online (Sandbox Code Playgroud)

上面的方法将使用它自己的自动命名约定为外键约束生成名称。

但是,我想删除新表,因为我需要通过从头开始创建表来进行一些重大修改。

显然,如果我仅执行drop语句,SQL Server数据库将抱怨说新表具有对其他表的外键引用。

我听说过运行以下脚本来找出存在哪些外键,以便我们可以删除它们:

use perls;
SELECT 'ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME +
'] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']'
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY' and TABLE_NAME = 'NewTable'
Run Code Online (Sandbox Code Playgroud)

上面给出的结果基本上显示了我需要运行的alter语句。

我需要更自动化的东西。为什么我必须分别删除每个外键约束,然后才能删除表?

我想以一种更简单的方式删除表格。它比我上面要做的要容易。

sql t-sql sql-server foreign-keys sql-drop

5
推荐指数
1
解决办法
3176
查看次数

如何在oracle DB中再次重用未使用的列

我有一个包含4列,ID,NAME,AGE和COUNTRY的表.一段时间以来,我已将我的AGE列设置为未使用以下命令

alter table Personal set unused column AGE;
Run Code Online (Sandbox Code Playgroud)

现在我想再次使用相同的列AGE,如何在Oracle(10g)中执行此操作.

并删除一列并将列设置为Unused,这是最佳选择.请指导我.

oracle10g sql-drop

5
推荐指数
1
解决办法
2万
查看次数

SQLite删除和重新创建表

如何删除并重新创建包含更新信息的表?

例如; 我的应用程序中有一张表有5条记录.

ID     Entry
1      a
2      b
3      c
4      d
5      e
Run Code Online (Sandbox Code Playgroud)

现在,当我删除一条记录时,表示ID 3会变成

 ID     Entry
1      a
2      b
4      d
5      e
Run Code Online (Sandbox Code Playgroud)

如何删除它,并重新创建它成为:

  ID     Entry
1      a
2      b
3      d
4      e
Run Code Online (Sandbox Code Playgroud)

实际上删除是由用户控制的,因此任何记录都可以随时删除.

sqlite android sql-drop

5
推荐指数
1
解决办法
4万
查看次数

如何在PostgreSQL中删除多个具有外键的表?

我知道删除多个表的语法是:

DROP TABLE foo, bar, baz;
Run Code Online (Sandbox Code Playgroud)

但在我的情况下,3个表之间有外键和其他表不被删除.

  • 表1:外键来自表2,表3,数据库中还有3个表.
  • 表2:Forign键从表3中,在数据库中还有2个表.
  • 表3:Forign键来自数据库中的另外3个表.

那么如何删除这3张桌子呢?他们在表格中有数据.上面的语法会忽略外键吗?数据库中的其他表不应存在任何数据不一致.

sql postgresql sql-drop

5
推荐指数
1
解决办法
8056
查看次数

WordPress插件开发 - 插件停用后无法删除数据库表?

我试图删除我的自定义插件激活时创建的数据库表.我使用的代码基本相同,只是一个drop查询.但是,表不会掉线!

我已确认以下内容:

  • WP数据库用户具有删除表的权限(我在工作台中运行sql查询确认)
  • 正在调用查询并且是正确的(我使用'die($ sql)'来输出查询,然后在工作台中运行它)

    function my_plugin_remove_database() {
         global $wpdb;
         $table_name = $wpdb->prefix . "my_plugin_table";
         $sql = "DROP TABLE IF EXISTS $table_name;";
         //die($sql);
         require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
         dbDelta( $sql );
         delete_option("my_plugin_db_version");
    }
    register_deactivation_hook( __FILE__, 'my_plugin_remove_database' );
    
    Run Code Online (Sandbox Code Playgroud)

mysql wordpress sql-drop

5
推荐指数
1
解决办法
4639
查看次数