在 cassandra 中创建 table 的关键 space 名称问题
Key space name issue with creating table in cassandra
我有一个现有密钥 space 'emsSdk'。我需要在提到的键 space 到 java 中创建一个 table。所以我遵循了使用 spark-cassandra-connector 的代码。代码如下
ession.execute("CREATE TABLE emsSdk.activity (project_party_id TEXT, error_count TEXT,"
+ " lock_version TEXT, record_status_id TEXT, error_type TEXT, error_message TEXT, file TEXT, release_stage_id TEXT, "
+ "line_no TEXT, uid TEXT PRIMARY KEY, activity_type_id TEXT, created_at TEXT,"
+ "project_name TEXT, project_api_key TEXT, project_type_name TEXT, stage_name TEXT)");
但是它给我一个错误,
emssdk keyspace does not exists
我该如何解决这个问题?
我假设您使用 CQL3 创建 table。 CQL3 将键空间的名称、tables 等视为不区分大小写。 CQL3 语句中的名称将转换为小写,除非您将它们括在双引号中。
如果你在切换到CQL3之前创建了keyspace,keyspace的名称仍然是大小写混合存储的,即"emsSdk",与emssdk不匹配,CQL3后的名称将其转换为小写。
因此解决方法是在语句中引用名称:CREATE TABLE "emsSdk.activity" ...
当然你必须转义 Java String:
中的引号
"CREATE TABLE \"emsSdk.activity\" ..."
苏也:http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/ucase-lcase_r.html
您需要在查询中用引号将 emsSdk 引起来。如果不这样做,则会将其转换为小写。从 CQL 查询引用时,任何使用大写字母创建的对象都需要用引号引起来。
Session.execute("CREATE TABLE \"emsSdk\".activity (project_party_id TEXT, error_count TEXT,"
+ " lock_version TEXT, record_status_id TEXT, error_type TEXT, error_message TEXT, file TEXT, release_stage_id TEXT, "
+ "line_no TEXT, uid TEXT PRIMARY KEY, activity_type_id TEXT, created_at TEXT,"
+ "project_name TEXT, project_api_key TEXT, project_type_name TEXT, stage_name TEXT)");
我有一个现有密钥 space 'emsSdk'。我需要在提到的键 space 到 java 中创建一个 table。所以我遵循了使用 spark-cassandra-connector 的代码。代码如下
ession.execute("CREATE TABLE emsSdk.activity (project_party_id TEXT, error_count TEXT,"
+ " lock_version TEXT, record_status_id TEXT, error_type TEXT, error_message TEXT, file TEXT, release_stage_id TEXT, "
+ "line_no TEXT, uid TEXT PRIMARY KEY, activity_type_id TEXT, created_at TEXT,"
+ "project_name TEXT, project_api_key TEXT, project_type_name TEXT, stage_name TEXT)");
但是它给我一个错误,
emssdk keyspace does not exists
我该如何解决这个问题?
我假设您使用 CQL3 创建 table。 CQL3 将键空间的名称、tables 等视为不区分大小写。 CQL3 语句中的名称将转换为小写,除非您将它们括在双引号中。
如果你在切换到CQL3之前创建了keyspace,keyspace的名称仍然是大小写混合存储的,即"emsSdk",与emssdk不匹配,CQL3后的名称将其转换为小写。
因此解决方法是在语句中引用名称:CREATE TABLE "emsSdk.activity" ...
当然你必须转义 Java String:
"CREATE TABLE \"emsSdk.activity\" ..."
苏也:http://www.datastax.com/documentation/cql/3.0/cql/cql_reference/ucase-lcase_r.html
您需要在查询中用引号将 emsSdk 引起来。如果不这样做,则会将其转换为小写。从 CQL 查询引用时,任何使用大写字母创建的对象都需要用引号引起来。
Session.execute("CREATE TABLE \"emsSdk\".activity (project_party_id TEXT, error_count TEXT,"
+ " lock_version TEXT, record_status_id TEXT, error_type TEXT, error_message TEXT, file TEXT, release_stage_id TEXT, "
+ "line_no TEXT, uid TEXT PRIMARY KEY, activity_type_id TEXT, created_at TEXT,"
+ "project_name TEXT, project_api_key TEXT, project_type_name TEXT, stage_name TEXT)");