如何在启用二进制模式的情况下将 sql 文件导入 Google SQL?

How to import sql file in Google SQL with binary mode enabled?

我的数据库出现错误:

ASCII '[=14=]' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '[=14=]' is expected.

我包括使用 gcloud sql import sql mydb gs://my-path/mydb.sql --database=mydb 通过控制台导入数据库,但我在文档中没有看到二进制模式的任何标志。有可能吗?

可选 - 在通过 MySQL Workbench 导入时是否可以设置此标志。我在那里也没有看到任何关于它的信息,但可能是我遗漏了一些设置或其他东西。如果有办法设置那个标志,那么我可以通过 MySQL Workbench.

导入我的数据库

谢谢。

根据源数据库的托管位置,在云 SQL 或 on-premise 环境中,在导出期间设置了正确的标志,因此转储文件与目标数据库兼容。

由于您想导入从 on-premise 环境中导出的文件,因此建议采用 mysqldump 执行导出的方式。

首先,按照 documentation 中的建议创建转储文件。请务必注意以下两点:

  • 不导出 customer-created MySQL 用户。这将导致导入新实例失败。相反,您希望手动 create the MySQL users
  • 确保您已配置适当的标志,以确保转储文件将包含您需要的所有必要详细信息。例如触发器、存储过程等

然后,创建一个云存储桶并将转储文件上传到桶中。

在继续导入之前,将存储对象管理员角色授予目标云 SQL 实例的服务帐户。您可以使用 following command:

gsutil iam ch serviceAccount:[SERVICE-ACCOUNT]:objectAdmin gs://[BUCKET-NAME]

您可以在云SQL实例概览中找到上述服务帐户,或者通过运行以下命令:

gcloud sql instances describe [INSTANCE_NAME]

服务帐户将在 serviceAccountEmailAddress 字段中提及。

现在您可以从控制台进行导入,或者使用 gcloud 命令或 REST API。

Google documentation

中有更多详细信息

Best Practices for importing/exporting data