我一直在使用官方的MySQL NPM软件包:https://www.npmjs.com/package/@mysql/xdevapi。
但是,我似乎无法与服务器建立连接。这是我收到的当前错误消息:
Error: The server connection is not using the X Protocol.
Make sure you are connecting to the correct port and using a MySQL 5.7.12 (or higher) server intance.
以下是生成该问题的代码:
const db = mysqlx.getSession('root@localhost:33060/schemaname').then(session => {
console.log('SESSION STARTED!!');
});
这只是一个没有密码的测试数据库,因此我认为密码不是问题。另外,我确保使用的端口正确,并且MySQL版本是8.x.x,所以我认为这不是问题。我使用应用程序Dbngin创建了一个数据库,并验证了可以通过在终端上运行以下命令来运行该数据库:mysql -u root -h 127.0.0.1 --port=33060 -p
。我也在Mac上运行它。
更新: 我也尝试过传递一个配置对象而没有太多运气:
const config = {
user: 'root',
password: '',
host: 'localhost',
port: 33060,
schema: 'schemaname'
};
const db = mysqlx.getSession(config).then(session => {
console.log('SESSION STARTED!!');
});
不幸的是,这段代码在上面产生了相同的错误。
答案 0 :(得分:2)
我自己尝试了一下,并得到了相同的错误,因为您使用的端口错误。可能是您更改了默认端口,但是默认端口是:3306而不是33060,尽管我必须在端口3306时使用端口33060。
X协议要求您将端口乘以10 。我在这里看到:https://dev.mysql.com/doc/mysql-port-reference/en/mysql-ports-reference-tables.html。 因此,如果您的原始端口是33060,我想应该是330600。
您可以尝试使用此命令SHOW VARIABLES LIKE 'mysqlx_port';