0
我不斷收到此錯誤。swift Vapor - 操作無法完成。 (MySQL.Error錯誤4.)
我確認mysql服務器正在我的MAC機器上運行,並且我在這個項目的mysql服務器上創建了一個數據庫。
- 下面是我main.swift
import Vapor
import VaporMySQL
let drop = Droplet()
try drop.addProvider(VaporMySQL.Provider.self)
drop.preparations = [Student.self]
let _ = HomeController(drop: drop)
drop.run()
- 下面是我HomeController.swift
import Vapor
import HTTP
import Foundation
final class HomeController {
var drop: Droplet
init(drop: Droplet) {
self.drop = drop
let studentsGroup = self.drop.grouped("/")
studentsGroup.get(handler: homePageWithBankList)
}
func homePageWithBankList(request: Request) throws -> ResponseRepresentable {
do {
var student = Student()
student.name = "name"
try student.save() // Here error raise
} catch {
print(error.localizedDescription) // Getting error log here
}
return ""
}
}
- 下面是我Student.swift模型類
import Vapor
final class Student: Model {
var id: Node?
var exists: Bool = false
var name: String = ""
init() {
self.id = nil
}
init(node: Node, in context: Context) throws {
id = try node.extract("id")
name = try node.extract("name")
}
public func makeNode(context: Context) throws -> Node {
return try Node(node:[
"id": id,
"name": name
])
}
static func prepare(_ database: Database) throws {
try database.create("student") { student in
student.id()
student.string("name")
}
}
static func revert(_ database: Database) throws {
try database.delete("student")
}
}
- 下面是mysql.json配置文件
{
"host": "localhost",
"user": "root",
"password": "admin",
"database": "studentsDB",
"port": "3306",
"encoding": "utf8"
}
- 下面是我的包依賴性
dependencies: [
.Package(url: "https://github.com/vapor/vapor.git", majorVersion: 1, minor: 5),
.Package(url: "https://github.com/vapor/mysql-provider.git", majorVersion: 1, minor: 1)
]
- 下面是在我的MAC
運行MySQL --version
mysql Ver 14.14 Distrib 5.7.17, for osx10.12 (x86_64) using EditLine wrapper
編輯: - 我有在GitHub上>>Here<<這個項目
我已經做了所有的改變,但仍然沒有運氣。我也更新了GitHub上的代碼。 –
你能告訴我們爲什麼從'學生'改爲'學生'的名字會起作用嗎?,因爲我嘗試了'學生',它的工作原理,但嘗試了更多的表名更改後,它隨機與一些表名稱工作,但隨機不工作與其他表名。這會讓我發瘋,爲什麼會發生這種情況。 :(。plz help –
最後使用'靜態var實體'一切正常,如果你能解釋爲什麼這樣工作,這可能是一個好的提示,因爲在蒸氣中我認爲它們大多數來自iOS,所以我們不知道這種提示。非常感謝。 –