• ベストアンサー

mysqlコマンドでSQL文が実行できません

いつもお世話になっております。 いつも調べてはいるのですが、わからず困っております。 mysqlコマンドで-eを付けて、次のようにコマンドプロンプトでクエリを実行します。 mysql db1 -u root -p**** -e 'SELECT * FROM tb1' すると失敗するのですが、シングルクォーテーションをダブルクォーテーションにすると実行できます。 mysql db1 -u root -p**** -e "SELECT * FROM tb1" コマンドプロンプトでは" "にしなければいけないのでしょうか。 どなたかヒントでもけっこうですので、お教えいただけないでしょうか。 どうか、よろしくお願いいたします。

  • MySQL
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

MySQL 4.1の日本語版マニュアルには、この辺の記述が見当たりませんでした。MySQL 5.1の日本語版マニュアルには、この辺について記述がありました。 http://dev.mysql.com/doc/refman/5.1/ja/mysql-command-options.html ↓(リンク先) http://dev.mysql.com/doc/refman/5.1/ja/command-line-options.html 「ステートメントはシングル、またはダブルの引用符で囲まれている必要があります。もしこの引用符内の値を使用したい場合には、ステートメントにダブルの引用符を使用し、シングルの引用符をステートメント内の値のうちのいづれかに使用します。」 とあり、これを見ると、「シングルクォーテーションはだめ」とは読み取れません。ただし、SQL中に文字定数を指定する場合は、「ステートメント全体はダブルクォーテーションで囲み、文字定数はシングルクォーテーションで囲む」と読めます。 -e "select * from t1 where c1 like 'abc%'" といった使い方ですね。 ちなみに、MySQL 5.1の英語版では、「The statements must be enclosed by quotation marks. 」としか記述がありません。

kisoyasa
質問者

お礼

chukenkenkouさん、恐縮です。 本当にいつもいつも、申し訳ありません。 やはりシングルでも、MySQL側は問題ある、ということではないのですよね。 ありがとうございます。感謝しております。

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

コマンドプロンプトってwindowsのですよね? windowsのcommand.comが、ブランクを含む文字列をひとつながりの引数として解釈するために、ダブルクォートが必要です。 MySQLは、そこで解釈された後の引数を受け取るので、statment外側のクォートが何であったかは関知しません。 そして、statment内の文字列指定に、シングルが使えるので、コマンドライン入力でも内部のクォートをいちいちエスケープしなくても簡単に外側と区別して記述できると言うことです。

kisoyasa
質問者

お礼

ご回答ありがとうございます。 「ブランクを含む文字列をひとつながりの引数として解釈」する ということなのですね。 ありがとうございます。

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

シングルクォーテーションではうまくいかなくて ダブルクォーテーションではうまくいく、ということは、 コマンドプロンプトにおいては ダブルクォーテーションを使わなければならない、 ということではないでしょうか。 MySQLでは、そういうことになっているのだと思います。

kisoyasa
質問者

お礼

ご回答、ありがとうございます。 お礼が遅れて申し訳ありませんでした。 いろいろな本をみても、たしかにコマンドプロンプトではダブルみたいですね。 そういうことなのかもしれませんね。 ありがとうございました。

関連するQ&A

  • mysqlでsqlファイルを実行したい

    コマンドプロンプトを起動して、mysqlで、sqlファイルを一括実行したいのですが、次の構文ですと、データベース名を入れなければなりません。データベースの作成もsqlファイルの中に書いてあるので、この段階では、データベースが存在しません。データベース名を入れないでsqlファイルを実行する構文がありましたら教えてください。 mysql -u root -D [dbName] -p < [FileName].sql

    • ベストアンサー
    • MySQL
  • MySQLデータベースにアクセスするホストの制限

    教えてください。 DBサーバ(Windows2003)にログインし、コマンドプロンプトで >mysql -u(ユーザ)-p(パスワード) を実行し、mysqlモードに入ってから select * host,user from mysql.user; をしたところ、hostの一覧で"%"というマークが表示されています。 これはhostが特定されていないという意味でしょうか?

    • ベストアンサー
    • MySQL
  • mysqlコマンドのエラー

    mysqlコマンドで、テキストに記述されたcreate文とinsert文を読み込みたいのですが、うまくいきません。下記がコマンドの実行結果です。パスワードつきとそうでないものをテストしましたが、駄目でした。 何かお気づきの点がありましたら、ご教示して頂けますと幸いです。 どうぞ、よろしくお願いいたします。 [root@db1 tmp]# mysql u_ec < u_ec.sql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) [root@db1 tmp]# mysql -u owner -p u_ec < u_ec.sql Enter password: ERROR 1045 (28000): Access denied for user 'owner'@'localhost' (using password: YES)

    • ベストアンサー
    • MySQL
  • シェルスクリプトでのmysqlコマンド実行

    いつもお世話になっております。 MYSQLで、データベースの一覧を出力し それを上から順にテーブル作成をしたいと考えています。 source コマンドで、ファイルを読み込んで実行したいのですが、 2つ目のfor文に上手く変数を渡せません。 'source $var_ファイル_$i.sql'` ↑これに変数が上手く渡りません。 そのままの値になってしまいます。 どうにか渡す方法はないでしょうか。 #!bin/bash var=`hostname -a` for i in `mysql -u root -p -e 'show databases'` do for (( cnt = 0; cnt < 11; cnt++ )) do echo $var echo $i `mysql -u root -p $i -e 'source $var_ファイル_$i.sql'` 1>> $var_ファイル_$i.log 2>&1 echo "$cnt 回目の処理" done done exit 0

  • PHP+PDO+MYSQL で実行されたSQL文の取得について

    PHP+PDO+MYSQL で実行されたSQL文の取得について PEARのDBからPDOへの移行をしていましてデバック用のSQL文取得で困っています。 $sql = "SELECT * FROM sample where id = ? And id2 = ?" PEARのDBでは $db->query($sql,array(1,5)); $db->last_query; で実行したSQL文を取得することは可能でした。 PDOの場合 $sql_result = $pdo->prepare($sql); $sql_result->execute(array(1,5)); でリプレースフォルダ(クォート処理?)を利用してSQLを実行出来るようですが、 実行したSQLを確認する方法がマニュアル等を読みましたがどうしても分かりません。 どなたかご存知の方がいらっしゃいましたらご教授お願い致します。

    • ベストアンサー
    • PHP
  • コマンドプロンプトからMySQLに接続できない

    こんばんは。 スタート→すべてのプログラム→MySQL→MySQL Server 5.0→MySQL Command Line Client からパスワードを入力するとMySQLに接続できるのですが、コマンドプロンプトから mysql -u username -p を実行してしてパスワードを入力すると ERROR 1045 (28000): Access denied for user 'username'@'localhost' (using password: YES) と表示されて接続できません。 コマンドプロンプトから接続するにはどうすればいいのでしょうか。 宜しくお願い致します。

  • PHPからMySQLのバックアップをとるには?

    レンタルサーバのLinux+PHP4.2.1+MySQL3.23.42の環境で行っております。 HTML(PHP)フォームから、「バックアップ」ボタンが押されたときに、 MySQLのバックアップをとる(mysqldump)するプログラムを作りたいのですが、 mysqldumpコマンドは、SQLとしてクエリ送信できるのでしょうか? 例えば、 $strSQL = "mysqldump -u **** -p**** DB名 テーブル名 > dumptest.bak"; mysql_db_query($strSQL); のような感じでは、成功しませんでした。 mysql("DB名","mysqldump -u **** -p**** DB名 テーブル名 > dumptest.bak"; さらに、このような方法もあるみたいですが、 エラーも起こらないしdumpもされませんでした。 phpMyAdminなどは、どうやって実行しているんでしょうね。。。 知っている方がいましたら、是非ご教授くださいませ。

    • ベストアンサー
    • PHP
  • 【至急】MySQLログイン後文字コード変更バッチ

    いつもお世話になっております。 コマンドプロンプトにてMySQLに接続後、文字コードを変更まで行える batファイルを作成したのですが、うまくいかず困っております。 batファイル: c:\xampp\mysql\bin\mysql -u root -p1234 にて接続ができることは確認いたしました。 aaa.sqlファイル set character_set_client='sjis'; set character_set_connection='sjis'; set character_set_results='sjis'; c:\xampp\mysql\bin\mysql -u root -p1234 db1 < c:\(ファイルの場所)\aaa.sql とし、実行しましたが、ウィンドウが閉じ、うまくいきません。 いったいどのあたりが悪いのか見当がつかず、困っております。 お忙しいところすみませんが、お知恵を貸していただけませんでしょうか。 何卒宜しくお願いいたします。

  • mySQL8,0 コマンドプロンプト 起動できない

    mysqlの勉強中の初心者です。 windows 10 の64bitのpcを使用しています。 MySQLのダウンロードサイトから MySQL installer comunity等と一緒にMYSQL8、0(64bit)をインストールしました。 mySQLのコマンドプロンプトを使用するために コマンドプロンプトを立ち上げてmysql -u root -pを入力するとエラーがでます。 「'mysql'は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と出て起動できません。 ネットで調べるとpath設定を行うと記載あったので環境変数から 環境変数名の編集よりc:¥Program Files¥MySQL¥MySQL Server 8.0¥bin¥mysql.exe の設定をしたのですが、やはり起動できません。 他に方法を調べているのですが、MYSQLのサイトも英語表記でわかりにくく解決できません。 どなたかわかる方いたら教えてもらえないでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • コマンドラインで実行

    DB2でコマンドラインから実行していますがうまくいきません。 select文で a   b ----------- 1   2 をテーブルが存在しない状態で出したいのですが db2 "select a,b from values(1,2) as table" としてもうまくいきません。 どのようにしたらいいでしょうか?