我在桌面改造上做了一些R& D.所以,我需要一个表的克隆。
我运行命令&#34; create table <table name> as select * from <old table>
&#34;它起作用了。
但是,当我第二次运行时,我在中间取消了命令,之后我收到了以下错误。
$ select count(*) from my_table_copy;
SQL -211: Cannot read system catalog (systables).
ISAM -154: ISAM error: Lock Timeout Expired
SQLSTATE: IX000 at /dev/stdin:1
当我尝试通过Open Admin获取数据库时,也会出现错误:
256:数据库查询失败: -
错误:-244 [Informix] [Informix ODBC Driver] [Informix]无法执行 物理顺序读取以获取下一行。在sqlerrm(SYSTABLES) (SQLExecute [-244] at
如何解决这个问题?
谢谢,
答案 0 :(得分:2)
您必须获得这些锁定错误,因为引擎正在回滚您的克隆表事务。
检查&#34; onstat -x&#34;如果在flags列上有一个带有R的事务。 est.rb_time列显示了恢复完成过程的估计值。
我的建议?如果您不需要在新表上使用完全相同的实际数据,则可以将&#34; SET ISOLATION设置为DIRTY READ;&#34;就在create table命令之前。