のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,729人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    元スレMySQL 5.0

    mysql覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    301 = :

    経過

    他のJDBC アプリでログが出力されていたので

    アプリのソースってことがわかりました。

    しかし、ゴミになるってことはなに?ソースを追うしかないのか?

    302 = :

    自己れす 解決

    connect まではログにでているので、select 文を べた書きにしてうまく流れたので
    元に戻して 確認。

    jdbc のバージョンがでるところからおかしくなっていたのでJDBCなのか?

    そうなのか?

    304 = :

    続きです。

    2※phpスクリプト内部でINSERT文を実行する前に次のコードも入れています。
      mysql_query('set character set sjis',$dbHandle)
    3※組み立てられたSQLを画面上に print(""); で確認すると正常に日本語が入力されています。
    4※MySQLのデータ操作を行う際にCSEも使っているのですが、CSEよりテーブルを開き直接日本語
     を登録すると、その値は正常に日本語で登録されています。しかし、phpにて一覧出力すると ??? という
     具合に文字化けしてしまいます。


    あと、追加で質問させて頂きたいのですが、コマンドラインからMySQLを再起動するには
    何というコマンドを実行すればよいのでしょうか?ぐぐっても中々ヒットしませんでした。
    因みに、GUIツールとして MySQL Query Browserを使用しているのですがここから再起動とかも出来る
    のでしょうか?

    305 = :

    >>303,304
    まず、my.iniの設定から見直してみよう。
    その show variables の結果から、サーバがLatin1で起動されてるのが分かる。
    create databaseやcreate table時の指定が分からんからなんともだが、そのまま作成したとしたなら、
    仮に、"set names cp932"したところで、変更されるのは"connection"と"client"のみ。
    なので、mysqldがデータを受け取った時に、内部の保存コードである"latin1"に変換をかけてしまう。
    そこで、当然cp932(ms-sjis)はlatin1にマップ出来ないので文字列が壊れる。
    回避策は、以下の件とも絡むので後述。

    > コマンドラインからMySQLを再起動するには
    の件だけど、恐らく、>>303のpathから見て、インストーラでデフォルト設定でinstallしたんだろうけど、
    それだと多分、Windowsのサービスに登録されてるはず。その場合はDos窓から、
    nat start mysql (mysql5かも?) で起動、
    net stop mysql (同上) で停止。
    多分自動起動になってると思われるから、Winを立ち上げると同時に起動してるはず。
    コントロールパネル→管理ツール→サービスからでも起動、停止が行える。
    (QueryBrowser等GUIツールは使ったことないんで、ようわからん。すまん)

    起動だけなら、install_pathのmysqld-nt.exeをダブルクリックか、Dos窓から、直接そのmysqd-nt.exeを叩けばよい。
    停止は、install_path/bin/mysqladmin shutdown で。

    306 = :

    続き

    で、その起動時にオプションで、設定ファイル(my.ini)を読み込ませたり、charset他各種設定オプションを渡したりできる。
    サービス登録の場合も、上記の「管理ツール」→「サービス」から、起動時のコマンドラインオプションを設定できる。

    なので、charset等適切に編集したmy.iniを読み込ますように起動させればよい。
    具体的な設定方法などは、本家のManual等を参照してくれ。

    ちなみにWin版のバイナリ版phpは、php_mysql.dllがlatin1でコンパイルされてるので、
    上記のことをやってなお、接続時に全てのクエリの前に "set names cp932" 等の処置が必要。
    又は、上記の設定ファイル中で書くやり方もある。
    それでは、がんばってくれ。

    307 = :

    ごめん。一つうそついてしまった。
    php_mysql.dllじゃなくて、正確にはmysqlに付属のlibmysql.dllが、
    デフォルトコードLatin1でコンパイルされているの間違い。
    (まあ、phpバンドルのlibmysql,dllも同じことなんだけど)

    309 = :

    続きです。

    3.php内部での文字コードの設定部分
    mysql_query("SET NAMES sjis");

    4.phpでテーブルより取得した値をsjisに変換した上で画面に出力
    while($row = mysql_fetch_array($rs))
    {

      /* 内部文字エンコーディングからSJISに変換 */
      $str = $row["NAME"];
      print("文字チェック1:[ ".$str." ] <br/>");
      $str = mb_convert_encoding($str, "SJIS");
      print("文字チェック2:[ ".$str." ] <br/>");

    ↓出力結果
    文字チェック1:[ ?????l ]
    文字チェック2:[ ?????l ]


    310 = :

    自己解決しました。

    ・・・MySQLってなかなか一癖ありますね。。。
    思わぬ落とし穴がありました。

    311 = :

    >>310
    どう解決したかを書かないと意味がないだろ。
    自分がよければそれでいいのかい?

    とりあえず文字コードを多重変換して嵌ってたんだろうと推測しとく。

    312 = :

    >>311
    良いよ
    だって自己解決したんだし。

    313 = :

    質問です。

    PHPとMySQLの連携を考えており、DBに接続して
    PHPから表示させることは出来ました。
    SELECT文についての質問ですが、今現在以下の通りになっています。

    SELECT * FROM wp_posts WHERE ID = 30 OR ID = 190 OR ID = 170 ORDER BY ID DESC

    これをPHPでwhileを使って縦に順番に表示すると、
    ID=190、ID=170、ID=30の順番で書き出されました。

    この表示する順番を、一番上からID=30、ID=190、ID=170と、
    SELECT文に記述されたIDの順番通りに表示するには、どうすればよいでしょうか?
    なにかいい案がある方、いらっしゃいましたらご教示下さい。

    314 = :

    select * from wp_posts order by (case ID when 30 then -3 when 190 then -2 when 170 then -1 else ID end) asc;

    316 = :

    MySQLはXen上では使えないんですか?

    CentOSのDomU上でMySQL5を使っておりますが、
    Buffer I/O error とやらが大量に出てきて、ファイルシステムが落ちます。
    再現するのはMySQLが動いている時だけなので、MySQLが原因とみて間違いないと思います。
    ディスクもディスクイメージも壊れていませんが。。。メソメソ

    317 = :

    >>316
    configureのときに--skip-bdbだったかな。

    318 = :

    >>317
    ありがとう。試してみる。

    319 = :

    PAM-MySQL の導入を検討しているのですが、
    (see:http://pam-mysql.sourceforge.net/Documentation/package-readme.php)
    crypt の値として平文、crypt(3)、PASSWORD()、MD5() を選択できるのですが、
    平文は論外として、どの選択がよりセキュアなのでしょうか?

    320 = :

    >>319です。自分でも調べてみようかと思いソースを覗いてみたら crypt=4 (or "sha1") で
    SHA1 が使えたみたいなのでこれを使ってみることにします。

    # と思ったら Web に書いてないだけで README に書いてあったorz

    322 = :

    gooでも質問したのですがこちらでも質問させてください。

    CentOS 4.6 に MySQL 5.0系をインストールして
    port 80番で運用したいと考えています。

    ところが、ポート80を指定して起動させると
    以下のエラーになり、起動できませんでした。

    mysqld started
    InnoDB: Started; log sequence number 0 43655
    [ERROR] Can't start server: Bind on TCP/IP port: Permission denied
    [ERROR] Do you already have another mysqld server running on port: 80 ?
    [ERROR] Aborting

    80番を使用する http は停止させており、
    iptables を停止させてもダメでした。

    別のシステムで CentOS をインストールした直後のものに
    MySQL をインストールしても同じ状態でした。

    ちなみにMySQL 4.1 系では同じ条件下の環境で
    my.cnf の[mysqld] で「 port = 80 」を
    指定するだけで起動できました。

    MySQL は CentOS のサイトからSRPMパッケージを取得し、
    i686オプションを指定してリビルドしたものを使用しています。


    今まで行ったのは次の通りです。
    ・コンフィギュアオプションをデフォルトでインストール。
    my.cnf の[mysqld] で「 port = 80 」を指定。
    ・specファイルのコンフィギュアオプションに
    「--with-tcp-port=80」を指定してリビルド。


    サーバの環境は以下の通りです。

    CentOS 4.6
    MySQL 5.0.54(SRPM から RPM を作成してインストール)
    インストールしたパッケージ
    mysql-libs-5.0.54-1.el4.centos
    mysql-5.0.54-1.el4.centos
    mysql-devel-5.0.54-1.el4.centos
    mysql-server-5.0.54-1.el4.centos


    どなたかおわかりの方、情報をお願いできませんでしょうか。
    よろしくお願いいたします。

    323 = :

    1024未満のポートを使うにはroot権限が必要だから
    どうしても80番を使いたければ
    iptablesのNAT機能を使って80から3306へ変換しなさい
    80番を使う動機を推測すると、たぶん外に公開したいのだろうから
    stunnelやstoneなどのSSLプロキシを使うと更によいと思う

    324 = :

    rootじゃないと80番は使えないんじゃ

    328 = :

    MySQL初心者です。

    テーブル名が(なぜか)小文字で作成されてしまった様なので
    テーブル名を大文字に変更しようと思い、次のクエリを実行したのですが
    一向に大文字になりません。一体何が原因なのでしょうか?

    ALTER TABLE test_table RENAME TO TEST_TABLE

    329 = :

    PHP5 / MySQL5.0を使用して簡単なデータベース登録
    システムを作っているのですがどうやっても
    日本語を登録すると文字化けして困っています。
    どうすれば日本語が登録出来ますか?
    ※WindowsXP Pro

    【C:\my.cnf】
    [client]
    default-character-set=sjis
    [mysql]
    default-character-set=sjis
    [mysqldump]
    default-character-set=sjis
    [mysqld]
    default-character-set=sjis

    【C:\Program Files\MySQL\MySQL Server 5.0\my.ini】
    default-character-set=sjis
    [mysqld]
    default-character-set=sjis
    ※基本このファイルの中にある「utf8」は全て
    「sjis」に置き換えました。

    331 = :

    >>329
    PHPは使ってないけど、PHPのMySQLライブラリは my.cnf 参照してないって
    聞いたことがある。デフォルトの laten1になるはず。
    サーバの設定変更していいなら [mysqld] に skip-character-set-client-handshake を書くか
    クライアントでなんとかしたいなら接続語に set names cp932 を投げたらいい。
    ちなみに sjis は 4.1 以降では使わないほうがいいよ。 より広い cp932 で。

    332 = :

    >>330 >>331
    レスありがとうございます。結論から言うと正常に日本語も登録されていました。
    しかしCSEでのぞいていた為に文字化けしている様に見えただけでした。
    odbcの文字コードの設定を sjis にしたら無事CSEからでも文字化けせずに見る
    事が出来る様になりました。

    333 = :

    TimeStamp型で定義したテーブルからデータを取得し、取得したデータを
    として取得するにはどうすれば良いでしょうか?

    2009-03-25 14:06:15
     ↓
    2009年03月25日 14時06分15秒

    334 = :

    日本語でおk

    335 = :

    >>333
    そういう処理はSQLでやるべきでない。

    336 = :

    >>335
    いやPHPでやる位ならSQLで一発でやりたいのです。
    何か方法はありませんか?

    337 = :

    >>336
    おまえみたいな人間は生きているべきでない。

    338 = :

    >>336
    手荷物預かり所で「あのう、このカバンの色を変えたいのですが」と言ってるのと同レベル

    339 = :

    で結局やる方法は無いの?

    340 = :

    やる方法はある
    でも多分PHPで書くより遅い

    mysql> select concat(year(c1),'年') from (select now() c1) v;
    +------------------------+
    | concat(year(c1),'年') |
    +------------------------+
    | 2009年 |
    +------------------------+
    1 row in set (0.00 sec)

    341 = :

    >>333
    date_format() つかえ。

    342 = :

    >>340
    ???
    てっきりSQLでやった方が速いと思ってたのですがPHPの方が速いのですか?
    それはなぜなのでしょうか?
    あと、SQLサンクスです。


    >>341
    ちょっとリファレンスを見てみます。

    343 :

    オートインクリメント有りのテーブルにレコードを入れた直後に
    それが何番に入ったかを知る方法ある?

    344 = :


    口の聞き方に気をつけろ

    346 = :

    ぐぐれかす

    347 = :

    >>343
    SELECT LAST_INSERT_ID();

    349 = :

    買収されてしまいました

    350 = :

    どうなるんだろうね
    つぶされちゃうのかな


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について