AccessViolation-试图从C#程序中读取或写入一个SELECT in Cassandra的受保护内存

AccessViolation-试图从C#程序中读取或写入一个SELECT in Cassandra的受保护内存,c#,solr,cassandra,C#,Solr,Cassandra,我有一个C#程序,它从一个Cassandra列族中读取行。对于每一行,它必须与另一个Cassandra列族中的其他行相匹配,并最终更新第一个列族中的地图集合。 两个Cassandra柱族都在Solr中。 程序崩溃并抛出错误: 试图读取或写入受保护的内存。这通常是一个问题 表示其他内存已损坏 使用StackTrace: at System.Data.Common.UnsafeNativeMethods.IColumnsInfo.GetColumnInfo(IntPtr& pcColumns

我有一个C#程序,它从一个Cassandra列族中读取行。对于每一行,它必须与另一个Cassandra列族中的其他行相匹配,并最终更新第一个列族中的地图集合。 两个Cassandra柱族都在Solr中。 程序崩溃并抛出错误:

试图读取或写入受保护的内存。这通常是一个问题 表示其他内存已损坏

使用StackTrace:

at System.Data.Common.UnsafeNativeMethods.IColumnsInfo.GetColumnInfo(IntPtr& pcColumns, IntPtr& prgInfo, IntPtr& ppStringsBuffer)
   at System.Data.OleDb.OleDbDataReader.BuildSchemaTableInfo(Object handle, Boolean filterITypeInfo, Boolean filterChapters)
   at System.Data.OleDb.OleDbDataReader.BuildMetaInfo()
   at System.Data.OleDb.OleDbDataReader.NextResult()
   at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.OleDb.OleDbCommand.ExecuteReader()
   at Casample.MainApp.selectIndexLinesMain(OleDbConnection conn, ModelInd modelGel) in c:\Program Files (x86)\Intellisoft\CASO\Samples\C#\02_SimpleQuery.cs:line 118
   at Casample.MainApp.Main(String[] args) in c:\Program Files (x86)\Intellisoft\CASO\Samples\C#\MainApp.cs:line 45
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
当我执行代码的这一部分时,会引发异常:

OleDbCommand cmd = conn.CreateCommand();

cmd.CommandText = "SELECT id,id2 FROM table2 WHERE  solr_query='{\"q\":\"firstname:\\\"" + model.firstname + "\\\" AND lastname = \\\"" + model.lastname+ "\\\" AND firstname2= \\\"" + model.firstname2 + "\\\" AND lastname2 = \\\"" + model.lastname2 + "\\\" AND -id2:" + model.id2 + "\"}';";

Console.Write(cmd.CommandText);
OleDbDataReader reader = cmd.ExecuteReader();
错误被抛出ExecuteReader()


如果我为不在Solr中的两个列族执行此程序,它将在不引发异常的情况下工作。

您是否尝试过使用核心驱动程序而不是ADO.NET组件?ie:
session.Execute(query)
很抱歉我的回复延迟了!我也试过了,我也犯了同样的错误。另外,作为更新,当我运行select并返回行时,我没有收到错误。只有在select找不到任何行时才会引发错误。您是否尝试过使用核心驱动程序而不是ADO.NET组件?ie:
session.Execute(query)
很抱歉我的回复延迟了!我也试过了,我也犯了同样的错误。另外,作为更新,当我运行select并返回行时,我没有收到错误。只有在select找不到任何行时才会引发错误。