如何使用 F# FAKE 的 DropDb 后接 failwith?
How do I use F# FAKE's DropDb followed by a failwith?
当我的一个 Target 函数出现错误时,我希望我的应用程序首先运行 DropDb,然后失败。但是当我有以下代码时:
DropDb *databaseInfo* |> ignore
failwith "Migration failed"
应用程序在 DropDb 删除数据库之前失败。
如何让应用程序仅在 DropDb 完成后失败?
我好像找到问题了:
在我的脚本中,我之前已经运行 DropDb,然后再次创建了一个数据库。 FAKE 中 DropDb 的代码是:
let DropDb serverInfo =
if intitialCatalogExistsOnServer serverInfo then
logfn "Dropping database %s on server %s" (getDBName serverInfo) (getServerName serverInfo)
(getDatabase serverInfo).DropBackupHistory |> ignore
getDBName serverInfo |> serverInfo.Server.KillDatabase
serverInfo
serverInfo
已存储在缓存中,该缓存未被我之前创建数据库的脚本更新,因此,initialCatalogExistsOnServer
returns false 和 none代码运行。
当我的一个 Target 函数出现错误时,我希望我的应用程序首先运行 DropDb,然后失败。但是当我有以下代码时:
DropDb *databaseInfo* |> ignore
failwith "Migration failed"
应用程序在 DropDb 删除数据库之前失败。
如何让应用程序仅在 DropDb 完成后失败?
我好像找到问题了:
在我的脚本中,我之前已经运行 DropDb,然后再次创建了一个数据库。 FAKE 中 DropDb 的代码是:
let DropDb serverInfo =
if intitialCatalogExistsOnServer serverInfo then
logfn "Dropping database %s on server %s" (getDBName serverInfo) (getServerName serverInfo)
(getDatabase serverInfo).DropBackupHistory |> ignore
getDBName serverInfo |> serverInfo.Server.KillDatabase
serverInfo
serverInfo
已存储在缓存中,该缓存未被我之前创建数据库的脚本更新,因此,initialCatalogExistsOnServer
returns false 和 none代码运行。