• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Xampp のbinary mode?)

Xamppのbinary mode

このQ&Aのポイント
  • Xampp 32bitをWindows 7のラップトップにインストールし、別のデスクトップのPCからのMysqlデータベースの移植を試みる際にエラーが発生しました。
  • 問題の原因は入力したパスワードの0(ゼロ)が問題である可能性があり、エラーメッセージにはbinary modeの設定が必要であると記載されています。
  • 設定ファイルの書き換えが必要であるかどうかは確認できませんが、Xamppのバージョンの違いも問題の原因となっている可能性があります。

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

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

>このコマンドラインでの文字化けを修正する方法をご存知でしたら、教えて頂きたいのです。デスクトップPCではこのプログラムはちゃんと走るのに、ラップトップで走らないのはこの文字化けの為と考えています。どうぞよろしくお願いいたします。 コマンドラインは、多くがSJISなのですよ。 逆にMySQLは今デフォルトがUTF8なので、 それが原因かもしれません。 ここからが面倒な事、 SJIS<>UTF8(またはUNICODE)の変換は ある意味では「できない」ということ。 ほとんどの文字は確かに変換できるのですが、 後からUTF8で実装された文字はかなり多く 変換が出来ない文字があり、 DBがUTF8なら、コンソールもUTF8対応の 物を使うしかないという問題があるので、 コマンドラインでは、あくまで「アルファベット部」 のみの、デバッグにとどめて、実際の結果は、 PHPなどで、送り出した文面で判断する方がよいかと。 なんせ、コマンドラインって「化石並みに古い時代から」 の物なので、今のコンソールに対応できないのは しかたないな!ってのはありますよ。 こちらで、開発時は、VirtualBOXという仮想PCソフトの上に Linux(例えばFedoraなど)を入れて、そこでデバッグしてます。 =そもそもが本物のLinuxなので、XAMPPより再現性が高い! =弱点は、それ自体がLinux丸ごとを含むので、容量が大きくなる。 ってのはありますが。 結局Windows+XAMPPは、それっぽくはなるが、 永遠に「それ自体」にはなれないのは、今後も変わらないでしょうから。 Win+WSL(Linux環境)なら少しはましだが、私は あまり好きになれないな~という印象 ともあれ、ほぼ?解決しましたね^^

papashiroSooke
質問者

お礼

色々と教えて頂き、有難うございました。 今回の本来の質問であったコマンドラインを使ってのデータベースのインポートは無事できましたので、この質問は閉めさせていただきたいと思います。 AsarKingChang さんのご回答には、私がよく理解できないことが結構あって、それを理解することに時間がかかり、お礼が遅れることがありますが、忍耐強く待っていてくださり、本当に感謝しています。 ただ、phpMyadminではちゃんと漢字が表示されているのにPHPプログラムが走らない件は、別途の質問として投稿するつもりです。

その他の回答 (2)

回答No.2

解析中に2個のエラー 1:終端クオート"'" があるべき(near "" at position 264182) 2:値6があるべきですが、5が見つかりました(near "(" at position 264133) まず・・・264182これは、気にしないで^^ 先頭からのバイト数なので、わかるかよ(笑)って感じです。 「1」番目は、 意味としては、 'waaaaaaaaaaaaaaaaaaaaaaaa ↑こんな感じで、なんかの理由で最後のシングルクオートがないよ! 'waaaaaaaaaaaaaaaaaaaaaaaa’ ←こう見えてないって事 「2」番目は、 1,2,3,4,5,6 に見える行が何らかの理由で 1,2,3,4,5 と解釈されてるので、1個パラメタたりな~い! ってことですが。 元々のSQLエクスポートの段階で、 例えば insert ,,,,, (),(),(); ←一行にだ~~~~~~~~~~~~~っと 書いてると出やすく、解析しにくいのではまります。 エクスポート段階で、行を細かく分けると、 該当部分を見つけるのが楽になり、最悪、それだけは 「手入力で~」など、緊急時にパニックになりにくいですね。 .sqlってファイルは基本的に ";"ごとに 1つの行なので、エディターで どこだろーと、大雑把に分けてみるってのもありですが。 あと、エクスポートの時、 「型+リレーショナルデータ+初期値データ」 と、 「実際のデータ」 を分けて2ファイルで出すことと 「実際のデータ」は、行の最大値を短くして 可能な限り多くのクエリ数で発行しておく。 (インポートには時間はかかるが、こけるよりまし!) にしておく方がいいですよ。 insert テーブル何たら a,b,c (1,2,3),(4,5,6); これは insert テーブル何たら a,b,c (1,2,3); insert テーブル何たら a,b,c (4,5,6); でも同じなので、可能な限り「分ける」 エクスポートのオプション側で、変えられると思います。 で、最初の質問の Error: ASCII '\0' appeared in the statementbut this is not allowなんたら これなんやねん! これですが、MySQLがインポートするファイルを解析しているうちに、エンゼロ=終端に来た!ってのを怒ってるってことです。 つまり、 'aaaaaaaaaaaaa みたいに文字列が始まったっぽいんだが、 終わってない(’がこない) しかも、\0=終端がみえるんですけど~ ってのが、直接の原因です。 恐らく手元にある、エクスポートsqlファイルが 壊れているか、長すぎて解析できてない事が 原因かと思います。

papashiroSooke
質問者

お礼

ご回答有難うございます。 mYSQLadminを使って一部インポート出来たデータの最後を見てみましたら、ある漢字で終わっていました。もともとのデータを見てみるとその漢字の次にスペース(全角)があり、さらに次の漢字が続いていました。そこで、このスペースが臭いなと思い、元のデータからスペースを削除し、またコマンドラインからデータのエクスポートとインポートを繰り返したら、ラップトップの方にデータベースをコピーすることが出来ました。それで確認のためにMySQLadminからテーブルをのぞいてみると、データがちゃんと保存されたことがわかりました。 ところがこれをコマンドプロンプトで見ると文字が化けていて、私が作っているカラオケ演奏プログラムが走りません。 これは余談になりますが、私のプログラムはnumber コラムの番号を入力すると、path コラムにあるその曲の実際のパスを引っ張ってきて、<embed> タグで演奏するものです。従ってプログラム中でpathを引っ張って来た時にその値が文字化けしていたら<embed>に渡してもそこまでたどり着けないわけです。 <video>タグでなく<embed>、しかもInternet Explorer を使っているのは、曲のすべてが ".avi" 拡張子を持っていて、このフォーマットのビデオを再生できるのはInternet Explorer の <embed> タグだけだからです。全部で9500曲あるので、ヴィデオコンバーターなどを使ってもっとポピュラーなMP4などに変換するのも大変なことです。 そこでお願いがあるのですが、このコマンドラインでの文字化けを修正する方法をご存知でしたら、教えて頂きたいのです。デスクトップPCではこのプログラムはちゃんと走るのに、ラップトップで走らないのはこの文字化けの為と考えています。どうぞよろしくお願いいたします。

回答No.1

# mysql -u root -p karaoke<c:/temp/db/db.sql >私が入力したパスワードは rsi2018 で 0 が入っているのです p は karaokeだと思います。 >この0(ゼロ)が問題でしょうか?  ”0"と"\0"は違いますよ。 前者は0x30で後者は0x00です。 それでXamppであれば、PHPMYADMINが ついてきているので、そちらで流し込んでみてはいかがですか? あと、あんまり、SQL系のダンプって 信用できないと、私は思ってるほどです。 ちょっとでもバージョンが違うと、インポート失敗なんてことも 多いですね。 こちらでは、xamppのSQLコアをMySQLに張り替えて使ってるので、 MariaDBではないのですが。 一応は互換とは「言われている」ので、 ひとまず、何がまずかったのか?はPHPMYADMINで やってみると、わかるかもしれません。 そのうえで、再度バックアップをしてみると うまくいくかもです。

papashiroSooke
質問者

お礼

早速にご回答いただき、有難うございます。 AsarKingChang さんには今までも色々と助けて頂いきました。本当に感謝です。 MySQL のコマンドプロンプトからのデータインポートに失敗したので、MySQLAdmin を使ってやってみましたが、以下のようなエラーが出てしまいました。 解析中に2個のエラー 1:終端クオート"'" があるべき(near "" at position 264182) 2:値6があるべきですが、5が見つかりました(near "(" at position 264133) これらはいったい何を意味しているのでしょうか? 元のデータベースの値を変更すことで解決できるのでしょうか? position 264182 というのはどうやって行けばよいのでしょうか? もしお時間があるならば、助けて頂きたく、お願い申し上げます。

関連するQ&A