使用卡桑德拉如下插入數據,我擔心在IntializeCassandra
初始化的東西不再在附近?插入卡桑德拉正在返回空指針錯誤
var csession gocql.Session
func IntializeCassandra(){
fmt.Println("Intializing Cassandra")
cluster := gocql.NewCluster("10.0.0.60")
cluster.Keyspace = "tickdata"
cluster.Consistency = gocql.Quorum
csession, _ := cluster.CreateSession()
defer csession.Close()
}
func main() {
IntializeCassandra()
}
在回調函數後來,當我嘗試將數據插入卡珊德拉,我得到一個空指針錯誤
func msgHandler(src *net.UDPAddr, n int, b []byte) {
t := time.Now().UTC()
tformat := t.Format("2006-01-02 15:04:05")
md := &MarketData.MD{}
proto.Unmarshal(b[:n], md)
log.Printf("%d %d %d %d %s %.5f %.5f", md.Firm, md.Symbol, md.Expiry, md.Id, tformat, md.Bid, md.Ask)
if err := csession.Query(`INSERT INTO timeseries (firm, symbol, expiry, quote_id, time, bid, ask) VALUES (?, ?, ?, ?, ?, ?, ?)`,
md.Firm, md.Symbol, md.Expiry, md.Id, tformat, md.Bid, md.Ask).Exec(); err != nil {
log.Fatal(err)
}
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x594687]
不,我想通了。由於某種原因,其他功能不會看到會議。所以我把主調內的csession,然後將指針作爲參數傳遞給其他函數。 – Ivan
'csession'應該在包裝中的任何位置都可見。 –