在顶层引发的错误:Fluent.EntityError.noDatabase
Error raised at top level: 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, StaticString, StaticString, UInt, 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, String, StaticString, UInt, 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, String, StaticString, UInt, 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", majorVersion: 1, 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 不会更新,我认为这可能是问题的一部分。我尝试了vapor xcode
、vapor build
和vapor clean
,但我无法获得最新版本。
A.
您应该验证 secrets/postgresql 中的信息。json
{
"host": "127.0.0.1",
"user": "username",
"password": "",
"database": "nameofyourdb",
"port": 5432
}
确保配置信息正确。尝试从终端手动连接到您的 postgresql 实例,并确保您的数据库确实存在。
B.
有时,数据会损坏。尝试还原您的数据库实例并再次 运行 您的应用程序。如果您使用 Xcode 到 运行 项目,您可以从 Edit scheme / 运行 / Arguments :
中执行此操作
prepare --revert
请注意,控制台会询问您是否确定要执行该操作,您需要输入 Y
作为接受。之后您需要删除上面的参数,下次您 运行 您的应用程序将有一个新的数据库。
警告:此操作将删除您的所有信息,因此您显然应该在开发环境中或至少备份您的信息。
我认为问题出在这里:
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
,需要手动准备模型。
希望对您有所帮助!
我正在尝试修复最近 运行 我的 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, StaticString, StaticString, UInt, 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, String, StaticString, UInt, 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, String, StaticString, UInt, 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", majorVersion: 1, 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 不会更新,我认为这可能是问题的一部分。我尝试了vapor xcode
、vapor build
和vapor clean
,但我无法获得最新版本。
A.
您应该验证 secrets/postgresql 中的信息。json
{
"host": "127.0.0.1",
"user": "username",
"password": "",
"database": "nameofyourdb",
"port": 5432
}
确保配置信息正确。尝试从终端手动连接到您的 postgresql 实例,并确保您的数据库确实存在。
B.
有时,数据会损坏。尝试还原您的数据库实例并再次 运行 您的应用程序。如果您使用 Xcode 到 运行 项目,您可以从 Edit scheme / 运行 / Arguments :
中执行此操作prepare --revert
请注意,控制台会询问您是否确定要执行该操作,您需要输入 Y
作为接受。之后您需要删除上面的参数,下次您 运行 您的应用程序将有一个新的数据库。
警告:此操作将删除您的所有信息,因此您显然应该在开发环境中或至少备份您的信息。
我认为问题出在这里:
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
,需要手动准备模型。
希望对您有所帮助!