【发布时间】:2019-11-05 16:17:43
【问题描述】:
我正在尝试运行以下命令
gcloud beta sql instances create my_replica \
--master-instance-name=db-master01 \
--master-username=replication_user \
--master-password='replication_password' \
--master-dump-file-path=gs://path/to/dump.sql.gz \
--database-flags default_time_zone='-05:00' \
sql_mode='STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION' \
--region=us-central \
--tier=db-g1-small
但我收到以下错误:
ERROR: (gcloud.beta.sql.instances.create) unrecognized arguments: sql_mode=STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
To search the help text of gcloud commands, run:
gcloud help -- SEARCH_TERMS
我是否输入错误?不支持吗?
更新: 根据 Stefan 的回复,我更新了命令以修复语法。我得到的新错误如下:
这是我的命令:
gcloud beta sql instances create $replica_name \
--master-instance-name=db-master01 \
--master-username=replication_user \
--master-password='replication_password' \
--master-dump-file-path=gs://path/to/dump.sql.gz \
--database-flags default_time_zone='-05:00',sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' \
--region=us-central \
--tier=db-g1-small
这是错误:
ERROR: (gcloud.beta.sql.instances.create) argument --database-flags: Bad syntax for dict arg: [NO_ZERO_IN_DATE]. Please see `gcloud topic flags-file` or `gcloud topic escaping` for information on providing list or dictionary flag values with special characters.
Usage: gcloud beta sql instances create INSTANCE [optional flags]
optional flags may be --activation-policy | --assign-ip | --async |
--authorized-gae-apps | --authorized-networks |
--availability-type | --backup | --backup-start-time |
--client-certificate-path | --client-key-path | --cpu |
--database-flags | --database-version |
--enable-bin-log | --failover-replica-name |
--follow-gae-app | --gce-zone | --help | --labels |
--maintenance-release-channel |
--maintenance-window-day | --maintenance-window-hour |
--master-ca-certificate-path |
--master-dump-file-path | --master-instance-name |
--master-password | --master-username | --memory |
--network | --pricing-plan |
--prompt-for-master-password | --region |
--replica-type | --replication | --require-ssl |
--root-password | --source-ip-address | --source-port |
--storage-auto-increase |
--storage-auto-increase-limit | --storage-size |
--storage-type | --tier | --zone
For detailed information on this command and its flags, run:
gcloud beta sql instances create --help
我不明白为什么NO_ZERO_IN_DATE 是个问题。是否因为我为标志传递了不止一个值而在抱怨?
【问题讨论】:
-
去掉你的sql模式之间的空格。
-
@BillKarwin 感谢您的回复,我已经更新并重新运行了命令。输出是一样的。我确实看到几年前的一些旧帖子表明这是不可能的(stackoverflow.com/questions/39081389/…)。这篇文章是 3 年前的,所以我不确定是否有任何变化。
-
好的,值得一试。我不使用谷歌云,所以我不知道谷歌是否有任何限制。我只是想删除空格,因为如果 sql_mode 中有空格,标准 MySQL 会引发错误。