【问题标题】:unable to store base64 image data in Cassandra using cassandra driver无法使用 cassandra 驱动程序在 Cassandra 中存储 base64 图像数据
【发布时间】:2019-07-25 17:28:29
【问题描述】:

我的客户端应用程序使用base64 编码将图像数据发送到我的controller,我认为这是一个字符串。

我将json解析成下面的case class

case class PQ(id: Option[UUID],
                              d: String,
                               h: List[String],
                               image: List[String], 
                              s: String,
                               f:String,
                               t: Set[String],
                              t1: String,
                              a:String,
                               r:List[String])  

在执行数据库查询时,我正在创建insert 查询,如下所示

def insertValues(tableName:String, model:PQ):Insert = {
    println(s"insert values are ${model}")


    QueryBuilder.insertInto(tableName).value("id",model.id.get)
      .value("a",model.a)
      .value("d",model.d)
      .value("f",model.f)
      .value("h",seqAsJavaList(model.h))
      .value("image",seqAsJavaList(model.image)) 
      .value("r",model.r)
      .value("s",model.s)
      .value("t",setAsJavaSet(model.t))
      .value("t1",model.t1)
      .ifNotExists(); 
  }

数据库架构是

(
    id uuid PRIMARY KEY,
    a text,
    d text,
    f text,
    h list<text>,
    image list<text>,
    r list<text>,
    s text,
    t set<text>,
    t1 text
)

但我无法将数据保存在数据库中。我插入的数据是

PQ(Some(11111111-1111-1111-1111-111111111111),some d,List(h),List(some image data),s test,f test,Set(t),some t1,some a,List(r1))

我收到以下错误

insert query is INSERT INTO p_q (id,a,d,f,h,image,r,s,t,t1) VALUES (?,?,?,?,?,?,?,?,?,?) IF NOT EXISTS;
cassandra exception com.datastax.driver.core.exceptions.InvalidTypeException: Value 6 of type class scala.collection.immutable.$colon$colon does not correspond to any CQL3 type

【问题讨论】:

    标签: cassandra-2.0 datastax-java-driver


    【解决方案1】:

    由于打印件中的?????,我检测到某些东西正在破坏数据。

    问题不在于image,而在于字段r。它被定义为List,但我没有使用seqAsJavaList 添加它。这破坏了这些领域。我调试问题的方式可能对其他人有用。

    我创建了单独的Insert 查询并将它们打印出来。它帮助我找到了导致损坏的 Insert

      def insertValues(tableName:String, model:PracticeQuestion):Insert = {
        println(s"insert values are ${model}")
    
    
        val r1 = QueryBuilder.insertInto(tableName).value("question_id",model.question_id.get) 
        println(s"after id${r1}")
    
        val r2 = r1.value("answer",model.answer)
        println(s"after answer ${r2}")
    
        val r3 = r2.value("description",model.description)
        println(s"after desc ${r3}")
    
        val r4 = r3.value("fail_test",model.fail_test)
        println(s"after fail ${r4}")
    
        val r5 = r4.value("hints",seqAsJavaList(model.hints)) 
        println(s"after hints ${r5}")
    
    
        val r6 = r5.value("references",seqAsJavaList(model.references))
        println(s"after references ${r6}")
    
        val r7 = r6.value("success_test",model.success_test)
        println(s"after success ${r7}")
    
        val r8 = r7.value("tags",setAsJavaSet(model.tags))
        println(s"after tags ${r8}")
    
        val r9 = r8.value("title",model.title)
        println(s"after title ${r9}")
    
        val r10 = r9.value("image",seqAsJavaList(model.image))
        println(s"after image ${r10}")
    
        r10
      }
    

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 2023-04-08
      • 2017-06-23
      • 2017-12-04
      • 2018-04-16
      • 2017-08-07
      • 2017-11-05
      • 2019-04-18
      • 1970-01-01
      相关资源
      最近更新 更多