我使用节点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/。
通过使用这个链接,我试图连接下面的代码,
//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
中。
我不知道如何解决这个问题。你能帮我解决这个问题吗?谢谢!
发布于 2022-05-06 21:21:48
在应用程序沙箱中,您需要启用“传出连接(客户端)”,然后它就可以工作了。
不幸的是,由于斯威夫特虫,如果执行localizedDescription
,Swift错误的错误输出实际上并不有用。要查看实际的错误,需要在错误处理程序中添加类似于print(error)
的内容。
看看下面的截图中,如果我不检查“传出连接(客户端)”,print(error)
就会打印实际有用的文本,比如connect(descriptor:addr:size:): Operation not permitted (errno: 1)
。
https://stackoverflow.com/questions/72147166
复制相似问题