Memasukkan secara manual ke dalam koleksi MySQLx
P粉917406009
P粉917406009 2024-02-21 19:01:38
0
1
362

Saya mempunyai banyak data JSON yang perlu saya masukkan ke dalam jadual Koleksi MySQLx. Pelaksanaan Node semasa terus ranap apabila saya cuba memuatkan data JSON, saya mengesyaki ini kerana saya memasukkan terlalu banyak data sekaligus melalui API pengumpulan. Saya mahu memasukkan data secara manual ke dalam pangkalan data menggunakan penyataan SQL tradisional (semoga ia akan membantu saya melalui ranap NodeJs ini).

Masalahnya ialah saya mempunyai definisi jadual ini:

+--------------+---------------+------+-----+---------+-------------------+
| 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 |
+--------------+---------------+------+-----+---------+-------------------+

Tetapi apabila berlari 插入文档值('{}',DEFAULT,DEFAULT) Saya dapat:

ERROR 3105 (HY000): The value specified for generated column '_id' in table 'documents' is not allowed.

Saya telah cuba untuk tidak memberikan nilai lalai, menggunakan NULL (tetapi _id tidak membenarkan NULL, walaupun itu lalai), menggunakan 0 untuk _id, menggunakan nombor dan uuid_to_bin(uuid()), tetapi saya masih mendapat yang sama kesilapan.

Bagaimana untuk memasukkan data ini terus ke dalam jadual (saya menggunakan session.sql('INSERT...').bind(JSON.stringify(data)).execute() - menggunakan perpustakaan @mysql/ xdevapi)

P粉917406009
P粉917406009

membalas semua(1)
P粉191323236

_id 列是根据 JSON 文档中同名字段的值自动生成的。当您使用 CRUD 接口插入文档时,X Plugin 能够为此字段生成唯一值。然而,通过执行简单的 SQL 语句,您也绕过了该逻辑。因此,如果您自己生成 _id, anda boleh memasukkan dokumen, jika tidak, anda akan menghadapi ralat ini.

Sebagai contoh (menggunakan crypto .randomInt()):

const { randomInt } = require('crypto')

session.sql('insert into documents (doc) values (?)')
  .bind(JSON.stringify({ _id: randomInt(Math.pow(2, 48) - 1) }))
  .execute()

Saya ingin tahu tentang isu dengan API CRUD, dan ingin melihat sama ada saya boleh mengeluarkannya semula. Dalam kes ini, bagaimanakah anda memasukkan dokumen ini dan apakah maklum balas (jika ada) yang diberikan apabila ia "ranap"?

Penafian: Saya ialah pembangun utama penyambung MySQL X DevAPI untuk Node.js

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan