问题:
我正在尝试向具有数千万行的表添加新列,而不阻塞它。
我知道这里有一些选项,并且我尝试了ALTER TABLE值NULL和默认值,但是需要很长时间(不可行)并锁定表。
因此,我尝试编写一个迁移脚本,将原始表的结构复制到新表,将新列添加到新表,然后慢慢将旧表数据迁移到新表。
我的问题是 Knex 的数据副本。
我正在本地测试,下面的查询在 Sequel Pro 的 MySQL 版本 5.6.34 中运行得非常好,但我You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '在 Knex 中得到了一个。
knex.schema.raw(`
SELECT @prevMaxIdMovedRecord;
SELECT @newMaxIdMovedRecord;
SELECT maxIdMoved FROM migration_status
ORDER BY maxIdMoved DESC
INTO @prevMaxIdMovedRecord;
INSERT IGNORE INTO table_copy (field1, newField1)
SELECT t.field1, 1 FROM table t
WHERE t.id BETWEEN @prevMaxIdMovedRecord …Run Code Online (Sandbox Code Playgroud)