Apache воспламенить SQL вставка не удалась - PullRequest
0 голосов
/ 27 февраля 2020

Я вижу следующую ошибку ( Не удалось сопоставить ключ с узлом ) в журналах зажигания при попытке вставить данные из тонкого клиента go.

cache := "SQL_PUBLIC_ORGANIZATION"
_, err = c.QuerySQLFields(cache, false, ignite.QuerySQLFieldsData{
    PageSize: 10,
    Query: "INSERT INTO Organization(_key, name) VALUES" +
        "(?, ?)," +
        "(?, ?)," +
        "(?, ?)",
    QueryArgs: []interface{}{
        int64(1), "Org 1",
        int64(2), "Org 2",
        int64(3), "Org 3"},
})
if err != nil {
    log.Fatalf("failed insert data: %v", err)
}

Зажечь журналы:

[18:12:14,655][SEVERE][client-connector-#28881][ClientListenerNioListener]
Failed to process client request
[req=o.a.i.i.processors.platform.client.cache.ClientCacheSqlFieldsQueryRequest@6d41cd49]
class org.apache.ignite.internal.processors.query.IgniteSQLException:
Failed to execute DML statement [stmt=INSERT INTO Organization(_key,
name) VALUES(?, ?),(?, ?),(?, ?), params=[1, Org 1, 2, Org 2, 3, Org
3]]     at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.doRunPrepared(IgniteH2Indexing.java:1726)
    at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.querySqlFields(IgniteH2Indexing.java:1671)
    at
org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2035)
    at
org.apache.ignite.internal.processors.query.GridQueryProcessor$4.applyx(GridQueryProcessor.java:2030)
    at
org.apache.ignite.internal.util.lang.IgniteOutClosureX.apply(IgniteOutClosureX.java:36)
    at
org.apache.ignite.internal.processors.query.GridQueryProcessor.executeQuery(GridQueryProcessor.java:2578)
    at
org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:2044)
    at
org.apache.ignite.internal.processors.query.GridQueryProcessor.querySqlFields(GridQueryProcessor.java:1979)
    at
org.apache.ignite.internal.processors.platform.client.cache.ClientCacheSqlFieldsQueryRequest.process(ClientCacheSqlFieldsQueryRequest.java:107)
    at
org.apache.ignite.internal.processors.platform.client.ClientRequestHandler.handle(ClientRequestHandler.java:57)
    at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:160)
    at
org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage(ClientListenerNioListener.java:44)
    at
org.apache.ignite.internal.util.nio.GridNioFilterChain$TailFilter.onMessageReceived(GridNioFilterChain.java:279)
    at
org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived(GridNioFilterAdapter.java:109)
    at
org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter$3.body(GridNioAsyncNotifyFilter.java:97)
    at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
    at
org.apache.ignite.internal.util.worker.GridWorkerPool$1.run(GridWorkerPool.java:70)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748) Caused by: class
org.apache.ignite.IgniteCheckedException: Failed to map key to node.
    at
org.apache.ignite.internal.processors.query.h2.dml.DmlBatchSender.add(DmlBatchSender.java:105)
    at
org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.doInsert(DmlStatementsProcessor.java:813)
    at
org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.processDmlSelectResult(DmlStatementsProcessor.java:581)
    at
org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.executeUpdateStatement(DmlStatementsProcessor.java:539)
    at
org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFields(DmlStatementsProcessor.java:171)
    at
org.apache.ignite.internal.processors.query.h2.DmlStatementsProcessor.updateSqlFieldsDistributed(DmlStatementsProcessor.java:345)
    at
org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.doRunPrepared(IgniteH2Indexing.java:1706)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

С помощью http://apache-ignite-users.70518.x6.nabble.com/Failed-to-map-keys-for-cache-all-partition-nodes-left-the-grid-td23510.html обнаружено, что проблема связана с конфигурацией «Воспламенение базовой линии».

0 голосов
/ 27 февраля 2020

Поле Query, которое вы генерируете , равно INSERT INTO Organization(_key, name) VALUES(?, ?),(?, ?),(?, ?)

Вы должны иметь пробел после VALUES, например:

Query: "INSERT INTO Organization(_key, name) VALUES " +
            "(?, ?)," +
            "(?, ?)," +
            "(?, ?)",

Добавление + и новой строки после строкового литерала не вставляет новую строку в вашу строку, она будет просто пропущена (так как находится за пределами строкового литерала).

...