如何在启用二进制模式的Google sql中导入sql文件



我有一个数据库出现错误:

ASCII'\0'出现在语句中,但这是不允许的,除非启用了选项--二进制模式,并且mysql在非交互式模式下运行。如果需要ASCII"\0",请将二进制模式设置为1。

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

可选-在通过MySQL工作台导入时,是否有设置此标志的方法。我也没有在那里看到任何关于它的东西,但可能是我错过了一些背景或什么。如果有办法设置这个标志,那么我可以通过MySQL工作台导入我的数据库。

谢谢。

根据源数据库的托管位置,在Cloud SQL或内部部署环境中,在导出过程中会设置适当的标志,因此转储文件与目标数据库兼容。

由于要导入已从内部部署环境导出的文件,因此建议使用mysqldump执行导出。

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

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

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

在继续导入之前,请将存储对象管理员角色授予目标云SQL实例的服务帐户。您可以使用以下命令执行此操作:

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

您可以在Cloud SQL实例概览中找到上述服务帐户,也可以运行以下命令:

gcloud sql instances describe [INSTANCE_NAME]

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

现在,您可以从Console进行导入,也可以使用gcloud命令或RESTneneneba API进行导入。

谷歌文档中的更多详细信息

导入/导出数据的最佳实践

相关内容

  • 没有找到相关文章