Swift Perfect Mac本地环境配置

教程原文地址

Perfect框架中文文档地址: http://perfect.org/docs/index_zh_CN.html

开启本地服务器

首先, 根据Perfect框架的官网文档, 快速开启本地服务器 http://perfect.org/docs/gettingStarted_zh_CN.html

数据库选择

后端开发, 必不可少的便是数据库, Perfect框架支持好几种数据库, 我自己选用的是MySql数据库, 以下所有教程都是基于MySql数据库进行展开的.

教程所有内容主要是以在本地和服务器部署各种环境为主, 避免浪费不必要的时间在部署环境上.

在Mac上安装MySql

打开终端, 安装mysql(请勿使用dmg的方式安装mysql, 经我测试, 发现会碰到一些麻烦的问题)

brew install mysql
  • 在Mac OS 10.12 上面, 直接安装即可.
  • 在Mac OS 10.13 上面, 可能需要更新Homebrew, 更新Homebrew又需要Ruby, 更新Ruby又需要Rvm等等. 在这个版本的操作系统上面, Homebrew拿不到/usr/local文件夹的读写权限, 按照官方给出的解决方法(https://github.com/Homebrew/brew/issues/3228), 在我自己的mac电脑上并不行, 来回折腾了1个多小时还是不行, 我决定采取暴力方法.直接卸载重装Homebrew, 重新安装后, 顺利的在mac上安装好了mysql.

如果你也需要采用这种暴力方法, 请继续看, 如果你已经顺利安装了, 直接跳过卸载重装的部分.

卸载Homebrew

$ cd `brew --prefix` 
$ rm -rf Cellar$ brew prune 
$ rm -rf Library .git .gitignore bin/brew README.md share/man/man1/brew 
$ rm -rf ~/Library/Caches/Homebrew

重新安装Homebrew

进入Homebrew官网 https://brew.sh/index_zh-cn.html, 复制这里的命令到终端安装即可(安装命令可能会变, 所以请自行前往复制)

MySql启动与配置

安装完成后, 手动启动mysql

mysql.server start    # 启动
mysql.server stop     # 停止
mysql.server restart  # 重启

打开数据库

mysql -u root -p

设置mysql密码

UPDATE user SET authentication_string=PASSWORD('newpassword') where USER='root';

更新用户名和密码, 用户名建议用root, 后面的教程都会以此为例子.

设置完密码后刷新权限

FLUSH PRIVILEGES

输入 \q 退出数据库

重新登录数据库, 尝试用新密码进入, 如果成功, 退出数据库, 进行接下来的步骤.

建议在网上找一个数据库软件, 更加直观的查看数据和调试.

代码连接数据库

接下来回到本地服务器项目代码这边.

打开Package.swift导入.Package(url:"https://github.com/PerfectlySoft/Perfect-MySQL.git", majorVersion: 3), 注意最后面有个逗号.

在终端执行swift buildswift package generate-xcodeproj, 用xcode打开项目.打开main.swift

import PerfectMySQL // 导入

// 配置数据库信息
let testHost = "127.0.0.1"
let testUser = "root"
let testPassword = "数据库密码"
let testDB = "mysql"

除了密码需要改成你自己设置的密码, 其他的照搬

加入以下函数并调用, 在这个函数声明之后, 随处调用即可

func fetchData() {
    let mysql = MySQL() // 创建一个MySQL连接实例
    let connected = mysql.connect(host: testHost, user: testUser, password: testPassword)
    guard connected else {
        // 验证一下连接是否成功
        print(mysql.errorMessage())
        return
    }
    
    print("\(mysql.listDatabases())")
    
    defer {
        mysql.close() //这个延后操作能够保证在程序结束时无论什么结果都会自动关闭数据库连接
    }
}

运行项目, 控制台打印

["information_schema", "mysql", "performance_schema", "sys"]

表示数据库已经用代码连接成功.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI下拉刷新模糊效果A...
    袁俊亮技术博客阅读 11,996评论 9 105
  • 我在拉萨晃了七天, 今天是最后一天。 最后一天, 我没去看布达拉宫, 没去看大昭寺, 我晃了一天! 我晃进了八廓街...
    吧啦吧啦花花花阅读 622评论 0 0
  • 不同的时间想着不同的事情,不一样的世界不一样的地区不一样的生活,时间渐渐的抹去了你的想法,抹去了你的青涩,抹去了你...
    将来酱紫阅读 702评论 0 0
  • 夜长更冷 夜长更冷梦不成,寒气袭人心也冷。半生伤魂几多痴,月应笑我赤子深。
    玉生烟阅读 307评论 3 5
  • 我以为自己承受很多, 我以为高大的自己可以做你的港湾。 却不曾想, 你沉默安静的外表下, 压抑着波涛汹涌。 撑起这...
    湛兮阅读 238评论 0 0