我正在使用Vapor和内置的SQLite 3驱动程序:https://github.com/vapor/sqlite
所以我在 fluent.json 中将"driver": "memory"
更改为"driver": "sqlite"
并创建 sqlite.json :
{
"path": "data.sqlite"
}
但即使我使用Spotlight搜索,我也找不到任何名为data.sqlite的文件。我不能使用sqlite-provider
,这在我发现的许多教程中都很流行,因为它与Vapor 2不兼容:
无法生成Xcode项目:swift-package:错误:不可满足
但是数据存储在某个地方:我可以重启我的Mac,运行Vapor并查看所有数据。
我在这里已经阅读了很多类似的问题,但没有一个作者使用过Vapor,所以这些答案对我没有帮助。我需要获取此data.sqlite文件位置。我究竟做错了什么?
P.S 我正在使用Xcode 8.3.2,Swift 3.1,Vapor 2.0.1。 SQLite3已安装。
答案 0 :(得分:2)
好吧,我还是不明白Vapor存储数据库文件的位置,但我找到了这个解决方案:
Xcode > Product > Scheme > Edit Scheme > Options > Use Custom Working Directory
我将其设置为我项目的父目录,并在那里显示data.sqlite。
但是,即使Spotlight无法找到它们,我仍然想知道它们最初存储在何处以及以何种名称存储。
答案 1 :(得分:2)
终端find
命令行可用于查找" data.sqlite" (或其他已知数据库名称)文件无法通过Spotlight搜索找到:
sudo find / -name "data.sqlite" -print
在Vapor 2中,SQLite是Fluent
的一部分,因此不再需要SQLiteProvider
。使用SQLiteProvider
的教程将使用FluentProvider
。
对于Vapor 2默认api
模板,包含Fluent
。对于Vapor 2非默认web
模板,需要将fluent-provider
添加到Package.swift
,然后在代码中进行配置。
适用于swift package tools-version
3.1.0
dependencies: [
…
.Package(url: "https://github.com/vapor/fluent-provider.git", majorVersion: 1),
适用于swift package tools-version
4.0.0
dependencies: [
…
.package(url: "https://github.com/vapor/fluent-provider.git", .upToNextMajor(from: "1.3.0")),
我发现为Vapor 2生成SQLite文件的位置如下......
vapor --version
# Vapor Toolbox: 2.0.3
# Vapor Framework: 2.1.0
vapor new VaporDefaultExample
cd VaporDefaultExample/Config
nano fluent.json # edit to: "driver": "sqlite"
nano sqlite.json # create file. add { "path":"FindMeSQLite.sqlite" }
请注意,Config/sqlite.json
文件中指定了预期的.sqlite位置。
cd ..
vapor update
vapor build
vapor run &
sudo find / -name "FindMeSQLite.sqlite" -print
结果:" FindMeSQLite.sqlite"在{/ 1}}
中指定的路径/到/ VaporDefaultExample / FindMeSQLite.sqlite中找到Config/sqlite.json
结果:" FindMeSQLite.sqlite"再次在# ^C quit the previous vapor run
# then create Xcode project
vapor xcode -y
# run project in Xcode
# then, repeat the find
sudo find / -name "FindMeSQLite.sqlite" -print
path/to/VaporDefaultExample/FindMeSQLite.sqlite
找到
注意:如果您的配置的.sqlite位置不同,则macOS或Ubuntu上的Config/sqlite.json
应显示此位置。
答案 2 :(得分:0)
当您使用XCode生成并运行Vapor Project时,会发生这种情况。 Xcode对处于开发阶段的每个应用程序都使用本地临时目录。 在终端
中使用Vapor的CLI $ vapor build
$ vapor run
这将删除所有旧数据库,并在主目录中创建一个新的.sqlite文件。