附加数据库的SQLite顺序很重要吗?

时间:2017-05-11 14:11:16

标签: debugging sqlite common-table-expression

我将两个数据库(称为A和B)连接到SQLite的内存实例。 A较旧,并且有一个名为MAINVIEW的视图。 B是一个更新的,具有相同的视图,只有MAINVIEW与现在使用CTE构建(更新的SQLite版本,让我这样做而不是子选择)

如果我附加第一个和第二个B,我试图转移B.MAINVIEW它是空的,A.MAINVIEW按预期出来。 如果我首先附加B和第二个,那么两个转储都按预期出现,其余的花哨用法我使用它们,查看视图和连接和排序。

抽象描述,我知道,但是我可以放入的代码不多,因为它们是通过bash + sqlite构建的,并且这不是最好的东西,实际上要清楚。

任何人都遇到过这种行为。

有关如何以更好的方式调试此问题的任何提示(无法理解它正在执行的转储上的.eqp,但我可以根据请求发布正确解密它们的任何人)

使用SQLite 3.7.10创建了旧的数据库 已使用SQLite 3.15.2

创建了新的数据库

简化示例:

.databases  
.load ./lib/libsqlitefunctions.so  
DETACH DATABASE '103nd10';  
DETACH DATABASE '103nd14';  
ATTACH DATABASE '/sp001fe1/proj/5297/103nd10/SAVE/4D/sqlite/103nd10.db' AS '103nd10';
ATTACH DATABASE '/sp001fe1/tpa/103nd14/DATA/SQLite/103nd14.db' AS '103nd14';
.tables
CREATE TEMP VIEW IF NOT EXISTS vInteractive AS
    SELECT m0tvSP.ID AS SP_ID 
    FROM "103nd10".vSP AS btvSP 
    INNER JOIN "103nd14".vSP AS m0tvSP ON m0tvSP.ID == btvSP.ID;
SELECT COUNT(*) FROM vInteractive;

.database之后的输出:

  

seq名称文件

           

0主要   2 103nd14 /sp001fe1/tpa/103nd14/DATA/SQLite/103nd14.db
  3 103nd10 /sp001fe1/proj/5297/103nd10/SAVE/4D/sqlite/103nd10.db

.tables之后的输出:

  

103nd10.Edit_RCV 103nd10.vSP_port
     ...
     103nd10.vPerimeter_SP 103nd14.vSP
     ...
     103nd10.vResponse 103nd14.vWeekly
     103nd10.vSP

视图的行数:

  

COUNT(*)
  0

如果我切换ATTACH DATABASES,则行计数变为:

  

COUNT(*)
  24340

即使我只尝试转储 103nd14.vSP 视图,我使用第一个订单获得0。 这就是我如何识别103nd14数据库及其使用CTE的视图的问题。

0 个答案:

没有答案