ColdFusion 站点有时会使用错误的数据库
ColdFusion site sometimes uses wrong database
我正在使用 IIS 在同一台服务器上设置两个 ColdFusion 站点(比如 "Site A" 和 "Site B")。这两个站点具有相同的源代码,但 URL 和数据源不同。 "Site A" 使用数据库 DB1,"Site B" 使用 DB2。
问题是,有时我注意到 "Site B" 使用的是 DB1 而不是 DB2。这个问题不是每次都出现。例如,如果我点击一个页面 10 次,其中大约 7 次使用正确的数据库,3 次使用错误的数据库。此问题与 "Site A" 无关,仅与 "Site B".
相关
我尝试了很多解决方案,例如重新创建数据源,每一步都转储数据库,但没有找到确切原因。还有其他人面临这个问题吗?我需要更新 ColdFusion 吗?
(根据评论扩展....)
初步猜测可能是代码中的某些内容指向了错误的位置。
您如何在 CF 代码中引用数据源(Application.cfc 中的数据源设置)?这 2 个 Application.cfc 文件是否具有 不同的 应用程序名称?他们应该。否则,两个应用程序将共享相同的设置。由于 Application.cfc 在每个请求开始时执行,因此可能会产生 race conditions,因为多个线程可能同时读取和写入共享数据源设置。
示例:
"John" 请求 SiteA 中的页面。 SiteA 的 Application.cfc 执行。应用程序数据源设置为 DatasourceA;
component {
this.name = "MyApplication";
this.datasource = "DatasourceA";
}
同时,"Mike" 请求 SiteB 中的一个页面。 SiteB 的 Application.cfc 执行。应用程序数据源更改为 DatasourceB
component {
this.name = "MyApplication";
this.datasource = "DatasourceB";
}
然后 John 在 SiteA 上的请求运行一个查询。由于应用程序数据源现在是 DatasourceB,请求查询了错误的数据库。
解决方法是在 Application.cfc 中使用不同的应用程序名称。
我正在使用 IIS 在同一台服务器上设置两个 ColdFusion 站点(比如 "Site A" 和 "Site B")。这两个站点具有相同的源代码,但 URL 和数据源不同。 "Site A" 使用数据库 DB1,"Site B" 使用 DB2。
问题是,有时我注意到 "Site B" 使用的是 DB1 而不是 DB2。这个问题不是每次都出现。例如,如果我点击一个页面 10 次,其中大约 7 次使用正确的数据库,3 次使用错误的数据库。此问题与 "Site A" 无关,仅与 "Site B".
相关我尝试了很多解决方案,例如重新创建数据源,每一步都转储数据库,但没有找到确切原因。还有其他人面临这个问题吗?我需要更新 ColdFusion 吗?
(根据评论扩展....)
初步猜测可能是代码中的某些内容指向了错误的位置。 您如何在 CF 代码中引用数据源(Application.cfc 中的数据源设置)?这 2 个 Application.cfc 文件是否具有 不同的 应用程序名称?他们应该。否则,两个应用程序将共享相同的设置。由于 Application.cfc 在每个请求开始时执行,因此可能会产生 race conditions,因为多个线程可能同时读取和写入共享数据源设置。
示例:
"John" 请求 SiteA 中的页面。 SiteA 的 Application.cfc 执行。应用程序数据源设置为 DatasourceA;
component { this.name = "MyApplication"; this.datasource = "DatasourceA"; }
同时,"Mike" 请求 SiteB 中的一个页面。 SiteB 的 Application.cfc 执行。应用程序数据源更改为 DatasourceB
component { this.name = "MyApplication"; this.datasource = "DatasourceB"; }
然后 John 在 SiteA 上的请求运行一个查询。由于应用程序数据源现在是 DatasourceB,请求查询了错误的数据库。
解决方法是在 Application.cfc 中使用不同的应用程序名称。