Ich habe viele JSON-Daten, die ich in eine MySQLx-Sammlungstabelle einfügen muss. Die aktuelle Node-Implementierung stürzt immer wieder ab, wenn ich versuche, JSON-Daten zu laden. Ich vermute, dass das daran liegt, dass ich zu viele Daten auf einmal über die Sammlungs-API einfüge. Ich möchte mithilfe herkömmlicher SQL-Anweisungen manuell Daten in die Datenbank einfügen (hoffentlich helfen sie mir, diesen NodeJs-Absturz zu überstehen).
Das Problem ist, dass ich diese Tabellendefinition habe:
+--------------+---------------+------+-----+---------+-------------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------+------+-----+---------+-------------------+ | doc | json | YES | | NULL | | | _id | varbinary(32) | NO | PRI | NULL | STORED GENERATED | | _json_schema | json | YES | | NULL | VIRTUAL GENERATED | +--------------+---------------+------+-----+---------+-------------------+
Aber beim Laufen
插入文档值('{}',DEFAULT,DEFAULT)
Ich bekomme:
ERROR 3105 (HY000): The value specified for generated column '_id' in table 'documents' is not allowed.
Ich habe versucht, keinen Standardwert anzugeben, indem ich NULL verwende (aber _id lässt NULL nicht zu, obwohl das die Standardeinstellung ist), 0 für _id verwende, Zahlen und uuid_to_bin(uuid()) verwende, aber ich bekomme immer noch das Gleiche Fehler.
So fügen Sie diese Daten direkt in die Tabelle ein (ich verwende session.sql('INSERT...').bind(JSON.stringify(data)).execute()
– verwende die @mysql/xdevapi-Bibliothek)
_id
列是根据 JSON 文档中同名字段的值自动生成的。当您使用 CRUD 接口插入文档时,X Plugin 能够为此字段生成唯一值。然而,通过执行简单的 SQL 语句,您也绕过了该逻辑。因此,如果您自己生成_id
,您就可以插入文档,否则您将遇到该错误。作为示例(使用
crypto .randomInt()
):虽然我对 CRUD API 的问题很好奇,并且想看看我是否也能够重现它。在这种情况下,您如何插入这些文档以及当它“崩溃”时提供什么样的反馈(如果有)?
免责声明:我是 Node.js 的 MySQL X DevAPI 连接器的首席开发人员