微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – 在顶级引发的错误:Fluent.EntityError.noDatabase

我正在尝试修复我最近在运行Vapor项目时遇到的错误.

它构建良好,但当它运行时,它崩溃.这是我的日志:

Fatal error: Error raised at top level: Fluent.EntityError.noDatabase: file /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.58.6/src/swift/stdlib/public/core/ErrorType.swift,line 184
Current stack trace:
0    libswiftCore.dylib                 0x0000000100fe7cc0 swift_reportError + 132
1    libswiftCore.dylib                 0x0000000101004f50 _swift_stdlib_reportFatalErrorInFile + 112
2    libswiftCore.dylib                 0x0000000100fb3370 partial apply for (_assertionFailed(StaticString,String,StaticString,UInt,flags : UInt32) -> Never).(closure #1).(closure #1).(closure #1) + 99
3    libswiftCore.dylib                 0x0000000100dfb0a0 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 355
4    libswiftCore.dylib                 0x0000000100fb32b0 partial apply for (_assertionFailed(StaticString,flags : UInt32) -> Never).(closure #1).(closure #1) + 144
5    libswiftCore.dylib                 0x0000000100dfb5b0 specialized specialized String._withUnsafeBufferPointerToUTF8<A> ((UnsafeBufferPointer<UInt8>) throws -> A) throws -> A + 124
6    libswiftCore.dylib                 0x0000000100f57af0 partial apply for (_assertionFailed(StaticString,flags : UInt32) -> Never).(closure #1) + 185
7    libswiftCore.dylib                 0x0000000100dfb0a0 specialized specialized StaticString.withUTF8Buffer<A> ((UnsafeBufferPointer<UInt8>) -> A) -> A + 355
8    libswiftCore.dylib                 0x0000000100dfae80 _assertionFailed(StaticString,flags : UInt32) -> Never + 144
9    libswiftCore.dylib                 0x0000000100e1e540 swift_unexpectedError_merged + 569
10   App                                0x0000000100001ef0 main + 2798
11   libdyld.dylib                      0x00007fff974375ac start + 1
Program ended with exit code: 9

我正在使用VaporPostgresql包.这是我的Package.swift:

import PackageDescription

let package = Package(
    name: "mist",dependencies: [
        .Package(url: "https://github.com/vapor/vapor.git",majorVersion: 1,minor: 2),.Package(url: "https://github.com/vapor/postgresql-provider.git",minor: 1)
    ],exclude: [
        "Config","Database","Localization","Public","Resources","Tests",]
)

和main.swift:

import Vapor
import VaporPostgresql
import Auth
import HTTP

let drop = Droplet()
let auth = AuthMiddleware(user: User.self)

try drop.addProvider(VaporPostgresql.Provider.self)
drop.preparations.append(Post.self)
drop.preparations.append(User.self)
drop.preparations.append(Site.self)
drop.middleware.append(auth)

let admin = AdminController()
var site = Site(name: "",theme: "")

if let retreivedSite = try Site.all().first {
    site = retreivedSite
} else {
    drop.get { req in
        return Response(redirect: "http://localhost:8080/login")
    }
}

drop.get { req in
    return try drop.view.make("Themes/VaporDark/index",[
        "posts": Node(node: JSON(Post.all().makeNode()))
    ])
}

admin.addRoutes(to: drop)

drop.resource("posts",PostController())

drop.run()

我的postgres版本是9.6.1

出于某种原因,VaporPostgresql不会更新,我认为这可能是问题的一部分.我已经尝试过蒸汽xcode,蒸汽构造和蒸汽清洁,但我无法获得最新版本.

enter image description here

解决方法

我认为这个问题在这里

if let retreivedSite = try Site.all().first {
    site = retreivedSite
} else {
    drop.get { req in
        return Response(redirect: "http://localhost:8080/login")
    }
}

更具体地说,Site.all()调用.在调用run()命令之前,我们不准备模型,因此,要在该点之前查找Site,需要手动准备模型.

希望这可以帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐