Cassandra錯誤問題整合
錯誤一:Cassandra啓動錯誤(一)
錯誤信息:
The stack size specified is too small, Specify at least 228k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit
解決方法:
修改配置文件cassandra-env.sh去安裝目錄查找該配置文件
把JVM_OPTS="$JVM_OPTS -Xss180k" 改成 JVM_OPTS="$JVM_OPTS -Xss256k"
錯誤二:Cassandra啓動錯誤(二)
錯誤信息:
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit
解決方法:
進入到cassandra的conf/cassandra-env.sh文件中,將以下內容刪除
if [ "$JVM_VERSION" \> "1.7" ] ; then
JVM_OPTS="$JVM_OPTS -XX:+UseCondCardMark"
Fi
錯誤三:node中,cassandra連接報錯
代碼:
"use strict";
var cassandra = require('cassandra-driver');
var client = new cassandra.Client({ contactPoints: ['localhost']});
client.connect(function (err) {
if (err) {
client.shutdown();
return console.error('There was an error when connecting', err);
}
console.log('Connected to cluster with %d host(s): %j', client.hosts.length, client.hosts.keys());
console.log('Keyspaces: %j', Object.keys(client.metadata.keyspaces));
console.log('Shutting down');
client.shutdown();
});
錯誤信息:
message: 'All host(s) tried for query failed. First host tried, 127.0.0.1:9042: Error: connect ECONNREFUSED 127.0.0.1:9042. See innerErrors.' }
解決方法:
無法連接127.0.0.1 9042端口 ,打開cassandra.yaml,修改start_native_transport值,從false-> true,然後重啓cassandra服務./cassandra -f
錯誤四:cassandra-driver數據庫執行insert報錯
錯誤信息:
Cannot execute query with bind variables
解決方法:
在execute中加入參數{prepare: true}
錯誤五:node中cassandra-driver數據庫操作報錯(一)
錯誤信息:
Unknown code * for a consistency level\n
解決方法:
出現這個問題的主要原因是我 npm install cassandra-driver模塊的版本太高是3.*,其默認的consistencylevel 爲localOne, 而我安裝的cassandra版本是1.2.4還不支持localOne,可以有以下解決方法:
一:安裝高版本的cassandra數據庫,可以安裝1.2.12及其以上版本,我後來安裝的是1.2.14就可以了。
二:如果不想安裝高版本的數據庫,可以npm uninstall cassandra-driver卸載高版本的cassandra-driver模塊,安裝低版本的2.*,npm install [email protected].
三:這個方法不建議大家使用,因爲需要修改引用的cassandra-driver模塊的源碼,即在node_modules/cassandra-driver/lib/client-options.js中 consistency: types.consistencies.localOne修改爲 consistency: types.consistencies.one。這個方法只是我當時偷懶想出來的,所以極其不建議用這個方法!
錯誤六:node中cassandra-driver數據庫操作報錯(二)
錯誤信息:
TypeError: Expected Number, obtained '12'
解決方法:
期望得到一個數字,卻得到一個字符串’ ’,測試後ejs頁面的值能夠傳遞到對應的後臺,但在執行execute語句時報錯,說明頁面傳值時整數類型被html頁面轉化成了字符串類型,所以在後臺接受頁面傳來的值時需要做一下轉換,用Number()或者parseInt(),兩種方法來實現類型轉換。