node.js - 无法使用 datastax-driver 连接到 cassandra(已 stub 的 cassandra)

标签 node.js macos cassandra datastax datastax-enterprise

我在连接到 cassandra 时遇到问题。
我正在尝试使用 datastax node.js cassandra 驱动程序连接到 s-cassandra(这是一个 stub 的 cassandra,可以查看 here )。

由于某种原因将“127.0.0.1:8042”作为联系点传递给驱动程序 导致DriverInternalError:

(很难,有时它确实随机工作,我还没有弄清楚为什么有时它可以,有时我不......)

我得到的DriverInternalError:

{"name": "DriverInternalError",
"stack": "...",
"message": "Local datacenter could not be determined",
"info": "Represents a bug inside the driver or in a Cassandra host." }

这是我从 Cassandra 驱动程序日志中看到的内容:

log event: info -- Adding host 127.0.0.1:8042
log event: info -- Getting first connection
log event: info -- Connecting to 127.0.0.1:8042
log event: verbose -- Socket connected to 127.0.0.1:8042
log event: info -- Trying to use protocol version 4
log event: verbose -- Sending stream #0
log event: verbose -- Sent stream #0 to 127.0.0.1:8042
{"name":"application-storage","hostname":"Yuris-MacBook-Pro.local","pid":1338,"level":30,"msg":"Kafka producer is initialized","time":"2016-08-05T12:53:53.124Z","v":0}
log event: verbose -- Received frame #0 from 127.0.0.1:8042
log event: info -- Protocol v4 not supported, using v2
log event: verbose -- Done receiving frame #0
log event: verbose -- disconnecting
log event: info -- Connection to 127.0.0.1:8042 closed
log event: info -- Connecting to 127.0.0.1:8042
log event: verbose -- Socket connected to 127.0.0.1:8042
log event: info -- Trying to use protocol version 2
log event: verbose -- Sending stream #0
log event: verbose -- Sent stream #0 to 127.0.0.1:8042
log event: verbose -- Received frame #0 from 127.0.0.1:8042
log event: info -- Connection to 127.0.0.1:8042 opened successfully
log event: info -- Connection pool to host 127.0.0.1:8042 created with 1 connection(s)
log event: info -- Control connection using protocol version 2
log event: info -- Connection acquired to 127.0.0.1:8042, refreshing nodes list
log event: info -- Refreshing local and peers info
log event: verbose -- Sending stream #1
log event: verbose -- Done receiving frame #0
log event: verbose -- Sent stream #1 to 127.0.0.1:8042
log event: verbose -- Received frame #1 from 127.0.0.1:8042
log event: warning -- No local info provided
log event: verbose -- Sending stream #0
log event: verbose -- Done receiving frame #1
log event: verbose -- Sent stream #0 to 127.0.0.1:8042
log event: verbose -- Received frame #0 from 127.0.0.1:8042
log event: info -- Peers info retrieved
log event: error -- Tokenizer could not be determined
log event: info -- Retrieving keyspaces metadata
log event: verbose -- Sending stream #1
log event: verbose -- Done receiving frame #0
log event: verbose -- Sent stream #1 to 127.0.0.1:8042
log event: verbose -- Received frame #1 from 127.0.0.1:8042
log event: verbose -- Sending stream #0
log event: verbose -- Done receiving frame #1
log event: verbose -- Sent stream #0 to 127.0.0.1:8042
log event: verbose -- Received frame #0 from 127.0.0.1:8042
log event: info -- ControlConnection connected to 127.0.0.1:8042 and is up to date

我尝试过使用防火墙和打开应用程序,但没有帮助..有时它确实会随机工作,但我还没弄清楚为什么.. 我有一个 mac OS X El Capitan

最佳答案

对我有帮助的解决方案: 我需要将 system.local 表作为 prime-query-single 进行准备

{
        query: 'prime-query-single',
        header: {'Content-Type': 'application/json'},
        body: {
            "when": {
                "query": "SELECT * FROM system.local WHERE key='local'"
            },
            "then": {
                "rows": [
                    {
                        "cluster_name": "custom cluster name",
                        "partitioner": "org.apache.cassandra.dht.Murmur3Partitioner",
                        "data_center": "dc1",
                        "rack": "rc1",
                        "tokens": [
                            "1743244960790844724"
                        ],
                        "release_version": "2.0.1"
                    }
                ],
                "result": "success",
                "column_types": {
                    "tokens": "set<text>"
                }
            }
        }
    }

关于node.js - 无法使用 datastax-driver 连接到 cassandra(已 stub 的 cassandra),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38790232/

相关文章:

javascript - 比较同一数组的当前版本和先前版本以了解 JavaScript 中值的变化

objective-c - 如何让程序在登录时自动启动?

java - 从 cassandra 导出 key 的最快方法

nosql - Cassandra NOSQL + DNS数据库(全局全域索引数据库)

java - 使用 JarBundler 将 Java 转换为适用于 MacOSX 的 .app 文件

python - 使用 Python 和 datetime 模块根据 TimeUUIDType 从 Cassandra 获取列范围

javascript - Nodejs Rest API : UnhandledPromiseRejectionWarning: TypeError: News. 查找不是函数

mysql - 我想从nodejs的mysql数据库中获取表列表

node.js - Npm 安装失败(无法解决依赖关系)

objective-c - Xcode 6 在编译时自动添加不受支持的权利