gpt4 book ai didi

mysql - 将 MySQL 数据库迁移到 SQLite 时出错

转载 作者:行者123 更新时间:2023-11-29 06:35:11 24 4
gpt4 key购买 nike

我可以访问远程服务器上托管的 MySQL 数据库。我正在尝试将其迁移到本地 SQLite 数据库。为此,我使用 this脚本,如 this 所建议问题。用法是

./mysql2sqlite mysqldump-opts db-name | sqlite3 database.sqlite

我试过这样做(没有转储选项)并且 sqlite3 返回了一个错误:

Error: near line 4: near "SET": syntax error

到目前为止,我发现当我只在转储选项中指定一个表时

./mysql2sqlite db-name table-B | sqlite3 database.sqlite

它似乎工作正常,但是当我指定第一个表(我们称它为表 A)时,它返回此错误。由于 mysql2sqlite 的输出,我很确定它会返回此错误。转储文件的第 4 行(我猜是第 4 个逻辑行,或者从第 4 个实际行开始的命令)如下所示:

CREATE TABLE "Association_data_interaction" (
"id" int(10) DEFAULT NULL,
...
"Comments" text CHARACTER SET latin1,
...
"Experiment" text CHARACTER SET latin1,
"Methods" text CHARACTER SET latin1,
...
);

删除了许多其他行。我不太了解 SQL,但据我所知,迁移脚本试图输出一个转储文件,其中包含可以创建新数据库的命令,但脚本必须在 MySQL 的输出命令和命令之间进行转换sqlite3 想要创建一个数据库,但无法正确处理文本字段。我知道当我运行 SHOW COLUMNS;在 MySQL 数据库中,Comments、Experiment 和 Methods 列是“文本”类型。我该怎么做才能让 sqlite3 接受数据库?

注意:我对数据库有编辑权限,但我更愿意尽可能避免这种情况。我不相信我对数据库有管理权限。此外,如果相关的话,数据库有大约 1000 个表,其中大部分表有大约 10,000 行和 10-50 列。我对数据库的性能特征不太感兴趣;它们目前对我来说已经足够好了。

最佳答案

那个脚本有问题;其中一个错误是它期望在最后一个逗号之前有一个空格:

gsub( /(CHARACTER SET|character set) [^ ]+ /, "" )

将该行替换为:

gsub( /(CHARACTER SET|character set) [^ ]+/, "" )

关于mysql - 将 MySQL 数据库迁移到 SQLite 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25309739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com