結果メタデータ
"Name": "Klagenfurt", "CountryCode": "AUT", "District": "Kärnten", "Info": {
"Population": 91141 }
} ],
"executionTime": "0.0067 sec", "affectedRowCount": 0, "affectedItemsCount": 0, "warningCount": 0, "warningsCount": 0, "warnings": [], "info": "",
"autoIncrementValue": 0 }
例 5.8 RAW JSON ラップを使用した MySQL Shell 出力 (--json=raw)
shell> echo "select * from world_x.city where countrycode='AUT'" | mysqlsh --json=raw --sql --uri user@localhost:33060
{"hasData":true,"rows":[{"ID":1523,"Name":"Wien","CountryCode":"AUT","District":"Wien","Info":{"Population":1608144}},{"ID":1524,"Name":"Graz","CountryCode":"AUT","District":"Steiermark","Info":{"Population":240967}},{"ID":1525,"Name":"Linz","CountryCode":"AUT","District":"North Austria","Info":{"Population":188022}},{"ID":1526,"Name":"Salzburg","CountryCode":"AUT","District":"Salzburg","Info":{"Population":144247}},{"ID":1527,"Name":"Innsbruck","CountryCode":"AUT","District":"Tiroli","Info":{"Population":111752}},{"ID":1528,"Name":"Klagenfurt","CountryCode":"AUT","District":"Kärnten","Info":{"Population":91141}}],"executionTime":"0.0117 sec","affectedRowCount":0,"affectedItemsCount":0,"warningCount":0,"warningsCount":0,"warnings":[],"info":"","autoIncrementValue":0}
5.7.6 結果メタデータ
操作が実行されると、返される結果に加えて、いくつかの追加情報が返されます。 これには、次のいずれかの条 件に該当する場合に、影響を受ける行の数、警告、期間などの情報が含まれます:
• JSON 形式が出力に使用されています
• MySQL Shell は対話モードで実行されています。
出力には「When JSON」形式が使用され、メタデータは JSON オブジェクトの一部として返されます。 対話型 モードでは、メタデータは結果の後に出力されます。
API コマンドライン統合引数の構文
•
shell_object は、MySQL Shell グローバルオブジェクトにマップされる文字列です。
•
object_method は、shell_object によって提供されるメソッドの名前です。 メソッド名は、JavaScript、Python
または代替コマンドライン入力のフレンドリ形式のいずれかに従って指定できます。既知のメソッドはすべて 小文字を使用し、単語はハイフンで区切られます。 object_method の名前は、標準の JavaScript スタイルの camelCase 名から自動的に変換されます。この場合、大/小文字の変更はすべて - に置き換えられ、小文字にな ります。 たとえば、getCluster は get-cluster になります。•
arguments は、コール時に object_method に渡される引数です。
shell_object は公開されたグローバルオブジェクトのいずれかと一致する必要があり、object_method は有効な形
式 (JavaScript、Python またはコマンドライン対応) のいずれかのグローバルオブジェクトメソッドと一致する必 要があります。 有効なグローバルオブジェクトとそのメソッドに対応していない場合、MySQL Shell はステータ ス 10 で終了します。API コマンドライン統合引数の構文
arguments リストはオプションで、すべての引数は、このセクションで説明するコマンドラインでの使用に適し
た構文に従う必要があります。 たとえば、システムシェル (bash、cmd など) によって処理される特殊文字は避 けてください。引用符が必要な場合は、親シェルの引用符のみを考慮するようにしてください。 つまり、「foo bar」 が bash でパラメータとして使用されている場合、引用符は削除され、エスケープが処理されます。引数のリストでは、2 つのタイプの引数を使用できます: 位置指定引数と名前付き引数。 位置引数は、文字列、数 値、ブール、null などの単純な型です。 名前付き引数はキーと値のペアで、値は単純な型です。 使用方法は、次 のパターンに従う必要があります:
[ positional_argument ]* [ { named_argument* } ]* [ named_argument ]*
この構文を使用するためのルールは次のとおりです:
• 構文のすべての部分はオプションであり、任意の順序で指定できます
• 中カッコのネストは禁止されています
• 名前付き引数として指定するすべてのキー値は、スコープ内で一意の名前を持つ必要があります。 スコープ は、グループ化されていないか、グループ内 (中カッコ内) にあります。
これらの引数は、次の方法でメソッドコールに渡される引数に変換されます:
• グループ化されていない名前付き引数はすべて、それらが出現する場所に関係なく単一のディクショナリに結 合され、最後のパラメータとしてメソッドに渡されます
• 中カッコ内にグループ化された名前付き引数は、単一のディクショナリに結合されます
• グループ化された名前付き引数によって生成された位置指定引数およびディクショナリは、コマンドラインに 表示された順序で arguments リストに挿入されます
API インタフェースの例
API 統合を使用すると、--execute オプションを使用するよりも、MySQL Shell コマンドをコールする方が簡単で 扱いにくくなります。 次の例では、この機能の使用方法を示します:
• サーバーインスタンスがアップグレードに適していることを確認し、その後の処理のために結果を JSON とし て返すには:
$ mysqlsh -- util check-for-server-upgrade { --user=root --host=localhost --port=3301 } --password='password' --outputFormat=JSON --config-path=/etc/mysql/my.cnf
これは、MySQL Shell の同等のコマンドにマップされます:
mysql-js> util.checkForServerUpgrade({user:'root', host:'localhost', port:3301}, {password:'password', outputFormat:'JSON', configPath:'/etc/mysql/my.cnf'})
• InnoDB クラスタ サンドボックスインスタンスをデプロイするには、ポート 1234 でリスニングし、接続に使用 するパスワードを指定します:
$ mysqlsh -- dba deploy-sandbox-instance 1234 --password=password
これは、MySQL Shell の同等のコマンドにマップされます:
mysql-js> dba.deploySandboxInstance(1234, {password: password})
API インタフェースの例
• ポート 1234 でリスニングし、mycluster という名前を指定してサンドボックスインスタンスを使用して InnoDB クラスタ を作成するには:
$ mysqlsh root@localhost:1234 -- dba create-cluster mycluster
これは、MySQL Shell の同等のコマンドにマップされます:
mysql-js> dba.createCluster('mycluster')
• ポート 1234 でリスニングしているサンドボックスインスタンスを使用して InnoDB クラスタ のステータスを 確認するには:
$ mysqlsh root@localhost:1234 -- cluster status
これは、MySQL Shell の同等のコマンドにマップされます:
mysql-js> cluster.status()
• コマンド履歴をオンにするように MySQL Shell を構成するには:
$ mysqlsh -- shell.options set_persist history.autoSave true
これは、MySQL Shell の同等のコマンドにマップされます:
mysql-js> shell.options.set_persist('history.autoSave', true);