我有大量 JSON 数据需要插入到 MySQLx Collection 表中。当我尝试加载 JSON 数据时,当前的 Node 实现不断崩溃,我怀疑这是因为我通过集合 API 一次插入了太多数据。我想使用传统的 SQL 语句手动将数据插入数据库(希望它们能让我度过这次 NodeJs 崩溃)。
问题是我有这个表定义:
+--------------+---------------+------+-----+---------+-------------------+ | 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 | +--------------+---------------+------+-----+---------+-------------------+
但是运行时
插入文档值('{}',DEFAULT,DEFAULT)
我得到:
ERROR 3105 (HY000): The value specified for generated column '_id' in table 'documents' is not allowed.
我尝试过不提供默认值,使用NULL(但_id不允许NULL,即使这是默认值),使用0表示_id,使用数字和uuid_to_bin(uuid()),但我仍然得到同样的错误。
如何直接将此数据插入表中(我正在使用 session.sql('INSERT...').bind(JSON.stringify(data)).execute()
- 使用 @mysql/ xdevapi 库)
_id
列是根据 JSON 文档中同名字段的值自动生成的。当您使用 CRUD 接口插入文档时,X Plugin 能够为此字段生成唯一值。然而,通过执行简单的 SQL 语句,您也绕过了该逻辑。因此,如果您自己生成_id
,您就可以插入文档,否则您将遇到该错误。作为示例(使用
crypto .randomInt()
):虽然我对 CRUD API 的问题很好奇,并且想看看我是否也能够重现它。在这种情况下,您如何插入这些文档以及当它“崩溃”时提供什么样的反馈(如果有)?
免责声明:我是 Node.js 的 MySQL X DevAPI 连接器的首席开发人员