ColdFusion站点有时会使用错误的数据库

时间:2018-04-06 18:21:52

标签: coldfusion iis-6 coldfusion-11

我正在使用IIS在同一台服务器上设置两个ColdFusion站点(比如“站点A”和“站点B”)。两个站点都具有相同的源代码,但URL和数据源不同。 “站点A”使用数据库DB1,“站点B”使用DB2。

问题是,有时我注意到“站点B”使用的是DB1而不是DB2。此问题不会每次都出现。例如,如果我按页面10次,大约7次使用正确的数据库,3次使用错误的数据库。此问题不适用于“网站A”,仅适用于“网站B”。

我尝试了很多解决方案,比如重新创建数据源,在每一步上转储数据库,但没有找到确切的原因。还有其他人面临这个问题吗?我需要更新ColdFusion吗?

1 个答案:

答案 0 :(得分:4)

(扩展自评论......)

首先猜测代码中的某些东西是指向错误的地方。 您如何引用CF代码中的数据源(Application.cfc中的数据源设置)? 2个Application.cfc文件是否具有不同的应用程序名称?他们应该。否则,两个应用程序将共享相同的设置。由于Application.cfc在每个请求开始时执行,因此多个线程可以同时读取和写入共享数据源设置,从而产生race conditions

示例:

  1. "约翰"请求 SiteA 中的页面。 SiteA的Application.cfc执行。应用程序数据源设置为 DatasourceA ;

    component {
       this.name = "MyApplication";
       this.datasource = "DatasourceA";
    }
    
  2. 与此同时," Mike"请求 SiteB 中的页面。 SiteB的Application.cfc执行。应用程序数据源更改为 DatasourceB

    component {
       this.name = "MyApplication";
       this.datasource = "DatasourceB";
    }
    
  3. 然后John在 SiteA 上的请求会运行查询。由于应用程序数据源现在是 DatasourceB ,因此请求会查询错误的数据库。

  4. 解决方案是在Application.cfc中使用不同的应用程序名称。