首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Swift连接到MySQL数据库

如何使用Swift连接到MySQL数据库
EN

Stack Overflow用户
提问于 2022-05-06 20:43:12
回答 1查看 204关注 0票数 0

我使用节点js连接mysql服务器,它运行得很好。我使用了在节点js中开发并在本地macOS应用程序中使用的API。问题是在工作台上查询mysql数据库的数据是快速的,但在节点js中却非常延迟。因此,我必须直接从我的macOS应用程序连接mysql。

我从这里安装了mysql:https://www.mysql.com/downloads/

另外,我正在使用mysql工作台来测试连接,并且没有任何问题。因此,在系统首选项中,我有一个mysql扩展来启动和停止mysql服务器。在扩展中,我可以看到根文件夹位于/usr/local/mysql中。

我创建了新项目并添加了mysql-nio从这里的快速包

在那个存储库中,他们的API文档链接被破坏了https://api.vapor.codes/mysql-nio/master/MySQLNIO/,但是我找到了正确的链接https://api.vapor.codes/mysql-nio/main/MySQLNIO/MySQLConnection/

通过使用这个链接,我试图连接下面的代码,

代码语言:javascript
运行
复制
//https://github.com/vapor/mysql-nio

import Cocoa
import MySQLNIO

class ViewController: NSViewController {

    
    private var group: EventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 4)
     
    private var eventLoop: EventLoop {

        return self.group.next()
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
   
        do{
            
            let socketAddress = try SocketAddress(ipAddress: "127.0.0.1", port: 3306)
            
            let logger = Logger(label: "MyLogger")
            let connection = MySQLConnection.connect(to: socketAddress, username: "root", database: "MyDB", password: "3$@sdRt34@sdf$dja2", tlsConfiguration: nil, serverHostname: nil, logger: logger, on: eventLoop)                
            connection.whenComplete { result in
                
                switch result{
                    
                case .success(let connection):
                    
                    print("Success! Status closed: \(connection.isClosed)")
                    
                case .failure(let error):
                     
                    DispatchQueue.main.async {
                        
                        NSApp.presentError(error)
                    }
                }
            }
            
        }catch{
            
            NSApp.presentError(error)
        }
        
    }
}

错误:

手术无法完成。(NIOCore.IOError错误1.)

我在xcode项目中将App Transport Security Settings -> Allow Arbitrary Loads添加到YES中。

我不知道如何解决这个问题。你能帮我解决这个问题吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-06 21:21:48

在应用程序沙箱中,您需要启用“传出连接(客户端)”,然后它就可以工作了。

不幸的是,由于斯威夫特虫,如果执行localizedDescription,Swift错误的错误输出实际上并不有用。要查看实际的错误,需要在错误处理程序中添加类似于print(error)的内容。

看看下面的截图中,如果我不检查“传出连接(客户端)”,print(error)就会打印实际有用的文本,比如connect(descriptor:addr:size:): Operation not permitted (errno: 1)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72147166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档