在我的mysql数据库上使用inno_db引擎,
我有一张带外键的桌子.我想删除列(当然还有外键和相关索引 - 我不需要整列!)
现在,简单地删除它会产生错误:一般错误:1025错误将'.\ road_dmy#sql-19d8_2be'重命名为'.\ road_dmy\contact'(错误号:150)
听起来这是一个众所周知的问题. http://bugs.mysql.com/bug.php?id=15317
但无论如何,我应该怎么做才能放弃这个专栏?我非常确定没有人会使用这个DB
(顺便说一下,我怎么知道上面神秘错误信息的真实细节?)
我在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)
它工作正常.
在我们的原始设计中,我们搞砸了表中的外键约束.现在表中充满了数据,我们无法在不删除表中的所有记录的情况下更改它.我能想到的唯一解决方案是创建一个备份表并将所有记录放在那里,然后删除所有记录,更改表并开始添加它们.还有其他(更好)的想法吗?谢谢!
使用MS SQL Server
我试图使用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) ....
你能否在这段代码中说明什么错误?
我有一个大约75 GB的sqlite数据库.在数据库上创建索引需要将近4个小时.索引后,文件大小约为100 GB.
通常,我必须修改(插入/删除/更新)大块(几GB)的数据.截至目前,我正在修改表之前删除索引.修改完成后,将重新创建索引.
删除索引需要花费大量时间(与创建索引的顺序相同).
在一些非常特殊的情况下(当需要重新生成整个数据时),我可以写入新的数据库文件并将其替换为原始数据库文件.这个策略并不要求我放弃指数.
如果我不能只切换数据库文件,我该怎么做才能加快索引删除?欢迎任何建议/想法.
这是我认为单个文件数据库的局限之一.如果表/索引存储在单独的文件中,那么这些文件可以简单地标记为已删除.
我有一个新表,该表具有对许多现有表的外键引用。首次创建新表时,我通过以下方式创建外键:
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语句。
我需要更自动化的东西。为什么我必须分别删除每个外键约束,然后才能删除表?
我想以一种更简单的方式删除表格。它比我上面要做的要容易。
我有一个包含4列,ID,NAME,AGE和COUNTRY的表.一段时间以来,我已将我的AGE列设置为未使用以下命令
alter table Personal set unused column AGE;
Run Code Online (Sandbox Code Playgroud)
现在我想再次使用相同的列AGE,如何在Oracle(10g)中执行此操作.
并删除一列并将列设置为Unused,这是最佳选择.请指导我.
如何删除并重新创建包含更新信息的表?
例如; 我的应用程序中有一张表有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)
实际上删除是由用户控制的,因此任何记录都可以随时删除.
我知道删除多个表的语法是:
DROP TABLE foo, bar, baz;
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,3个表之间有外键和其他表不被删除.
那么如何删除这3张桌子呢?他们在表格中有数据.上面的语法会忽略外键吗?数据库中的其他表不应存在任何数据不一致.
我试图删除我的自定义插件激活时创建的数据库表.我使用的代码基本相同,只是一个drop查询.但是,表不会掉线!
我已确认以下内容:
正在调用查询并且是正确的(我使用'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)sql-drop ×10
sql ×3
sqlite ×3
foreign-keys ×2
mysql ×2
sql-server ×2
android ×1
hibernate ×1
indexing ×1
java ×1
oracle10g ×1
postgresql ×1
python ×1
t-sql ×1
wordpress ×1