MySQL総合 Part2
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001NAME IS NULL
04/03/17 14:46ID:???プログラム言語毎のMySQLの使い方等、
固有の細かい話は適宜それらの関連スレに投げましょう。
■ 公式サイト(英語)
http://www.mysql.com/
■ 日本MySQLユーザ会(MyNA)
http://www.mysql.gr.jp/
■ 日本語マニュアル&検索
http://www.mysql.com/doc/ja/
http://www.softagency.co.jp/mysql/Manual/
http://www.mysql.gr.jp/jpdoc/
■ メーリングリスト案内&検索
[MyNA(日本語)]
http://www.mysql.gr.jp/ml.html
http://www.mysql.gr.jp/mysqlml/
[本家(英語)]
http://lists.mysql.com/
http://lists.mysql.com/search.php
過去スレ/関連スレ/書籍/ツール/その他の情報 等は >>2-3 にある筈
0002NAME IS NULL
04/03/17 14:46ID:???[MySQL総合]
http://pc2.2ch.net/test/read.cgi/db/1056942908/
■ 関連スレ
[mysql ヘルプ!]
http://pc2.2ch.net/test/read.cgi/php/1011683282/
[MySQL vs PostgreSQL]
http://pc2.2ch.net/test/read.cgi/php/989341364/
■ MySQL日本代理店
[株式会社ソフトエイジェンシー]
http://www.softagency.co.jp/
[ゼンド・オープンソースシステムズ株式会社]
http://www.zend.co.jp/
■ ライセンス関連
http://www.mysql.com/doc/ja/MySQL_licenses.html
http://www.opensource.jp/gpl/gpl.ja.html (GPL非公式日本語訳)
■ MySQL関連本
http://www.mysql.gr.jp/books.html
http://www.mysql.com/portal/books/
0003NAME IS NULL
04/03/17 14:47ID:???[phpMyAdmin]
http://www.phpmyadmin.net/
[CSE - Common SQL Environment]
ttp://www.hi-ho.ne.jp/tsumiki/
[かねやんMySQLAdmin]
ttp://www.mmdb.net/m_kaneko/
[MySQL Control Center]
http://www.mysql.com/products/mysqlcc/
ttp://fringe.homeip.net/mysqlcc/ (言語ファイル)
[Navicat(旧MySQLスタジオ)]
http://www.navicat.jp/
[Emic Application Cluster for MySQL]
http://www.emicnetworks.com/products/mysql.html
■ その他の情報
[快速MySQLでデータベースアプリ!]
http://www.atmarkit.co.jp/flinux/index/indexfiles/mysqlindex.html
[実践MySQL]
http://www.softagency.co.jp/mysql/TIPS/
[SQLPowerPage](SQL構文一般)
http://www.sqlpowerpage.co.jp/
[ColdFusion用の資料](各種DBMSの予約語情報)
http://www.macromedia.com/jp/support/coldfusion/ts/documents/tn18050.htm
0004NAME IS NULL
04/03/17 19:32ID:???0005NAME IS NULL
04/03/17 20:19ID:???0006NAME IS NULL
04/03/17 23:45ID:???0007( ゚Д゚)
04/03/18 15:31ID:???WinMySQLadminとやらを動かしてみると「Environment」の「MyODBC」の欄に、
「NotFound Driver3.51 NotFound」と出てます。これは何事?!
そして「Databases」から、右クリックしてもデータベースが作れない・・・。
環境はXP SP1です。
何とかして、エロい人・・・。
0008NAME IS NULL
04/03/18 16:48ID:???>「NotFound Driver3.51 NotFound」と出てます。これは何事?!
ODBCをインストールしなければNotFoundと表示されます。
MySQLにアクセスする言語によってはODBCは必要ありません。
必要な場合はMyODBC-3.51.06.exeをダウンロードして実行してください。
http://www.mysql.com/downloads/api-myodbc-3.51.html
>そして「Databases」から、右クリックしてもデータベースが作れない・・・。
コマンドラインからmysqlかmysqladminで作れます。
GUIで作りたければ>>3の関連ツールで可能です。
しかしSQLを覚えるためにまずmysqlコマンドを使いこなす事をお勧めします。
0009NAME IS NULL
04/03/20 00:19ID:???コマンドラインでやってる香具師皆無ってことか?w
>>7
PHP環境がインストールできてるのなら、
phpMyAdminはどうだ?
ttp://www.phpmyadmin.net/home_page/
0010NAME IS NULL
04/03/20 11:27ID:???反応ないし、既に解決してるのかと思ってますが?
コマンドラインな人は別に支障ないし。
WinMySQLadminのDatabaseが操作できないのは多分↓
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=6757
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=6763
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=7033
0011NAME IS NULL
04/03/20 13:58ID:Ojes37WMここで聞く内容じゃないかもしれないので、
違ってたら誘導してください。
JSPでLinuxのlocalhost(仮にホスト名を2chとして)のMySQLに接続したく、
mysql-connector-java-3.0.11-stable-bin.jarを
WEB-INF/libに置いたのですが、
接続を拒否されます。
try {
Class.forName("org.gjt.mm.mysql.Driver");
String cs = "jdbc:mysql:///localhost/mona?useUnicode=true&characterEncoding=SJIS";
conn = DriverManager.getConnection(cs, "giko", "hage");
で、Invalid authorization specification, message from server:
"ユーザー 'giko@2ch'を拒否します.(Using password: YES)"
何故、ユーザー名に@localhostでなく、
勝手にホスト名をつけてしまうのかも謎なのですが、
どうしたら繋げられるか教えて下さい。
宜しくお願いします。
0012NAME IS NULL
04/03/20 16:07ID:Zlau2GE91 名前:未来人 投稿日:04/03/20 15:52 ID:0o3rsHR1
今、試験的に2029年、2ちゃんねるUNIX板で開発された『タイムアクセス』を使って
2004年3月20日の「2ちゃんねる」に書き込んでいます。
2029年から(´∀` )オマエモナー
http://pc2.2ch.net/test/read.cgi/mysv/1079763650/
0013NAME IS NULL
04/03/20 16:53ID:???JDBC接続時の"localhost"は、mysqlクライアントからの接続時の"localhost"と意味が違う。
mysqlクライアントからの接続時は
localhost→UNIXドメインのソケットで接続
127.0.0.1→INETドメインのソケット(TCP/IP)で接続
という意味になるけど、JDBCでは"localhost" "127.0.0.1"どちらもTCP/IPで接続する。
http://www.mysql.gr.jp/mysqlml/msg.cgi?ml=mysql&id=8567
ということで、JDBC接続するなら「'giko'@'127.0.0.1'」にGRANTしてね。
> 何故、ユーザー名に@localhostでなく、
> 勝手にホスト名をつけてしまうのかも謎なのですが、
なんとなく、/etc/hostsのエントリの問題の気がする。
grep '127.0.0.1' /etc/hosts
してみるとか、
host 127.0.0.1
してみると原因がわかるかも。
0014NAME IS NULL
04/03/20 17:38ID:Ojes37WMキタ━━━(゚∀゚)━━━!!!!
hostsが
127.0.0.1 2ch localhost.localdomain localhost
となっていたので/etc/sysconfig/networkともども、2chを消し、
MySQLの'giko'@'127.0.0.1'をgrantして、
解決しました。
本当にありがとうございました( ;´Д`)タスカリマスタ
0015NAME IS NULL
04/03/21 13:12ID:dNw8tM+Omysqlccみたいなもん?
0016NAME IS NULL
04/03/21 13:33ID:???そう、そんな感じ。MySQL AB的には、
動くのWindowsだけだし注力はしてないと思う。
0017NAME IS NULL
04/03/23 08:33ID:???小文字のテーブル名になってしまいます。
DBを止めて、ファイルを大文字にリネームしても、alter table文でテーブル構成を
変更するとまた勝手に小文字にリネームされます。
これを防ぐ方法ってなにかありますでしょうか?
0018NAME IS NULL
04/03/23 09:40ID:???http://www.mysql.com/doc/ja/Name_case_sensitivity.html
001917
04/03/23 09:51ID:???ありがとうございます。小文字に統一することを推奨しているんですね。
でもUNIX上では大文字にしてるので、大文字でに統一したいんですよね…on_
ちまちま変換します。
0020NAME IS NULL
04/03/23 10:09ID:???ちゃんと全部読んだか?
002117
04/03/23 10:17ID:????
-O lower_case_table_names=0
このオプションを付けたらテーブル名を小文字と見なさないということでしょ?
ああ、そういうことか。あとでやってみます。
0022NAME IS NULL
04/03/23 11:29ID:???大文字と小文字の処理上の区別じゃなくて、
見た目上の区別が欲しいみたいだからいいんでねぇ?
0023NAME IS NULL
04/03/23 11:38ID:???> >>20
> 大文字と小文字の処理上の区別じゃなくて、
> 見た目上の区別が欲しいみたいだからいいんでねぇ?
そうは読めないけど。
0024NAME IS NULL
04/03/23 14:20ID:xAiDoYwS(win2000+apache+php4+mysql3.23)
ある項目をテキストファイル(1行に1項目)と照合して
テキストファイルとデータベースの両方に存在するものだけに
何かしらのチェックを入れたいと思います。
どういった方法がいいでしょうか。ご教授お願いします。
0025NAME IS NULL
04/03/23 14:23ID:???自分のやりたいことがやれるスクリプト言語を勉強する。
002624
04/03/23 14:26ID:xAiDoYwS具体的な方法が思いつかないのです。
0027NAME IS NULL
04/03/23 14:38ID:???0028NAME IS NULL
04/03/23 16:51ID:???PHPは知らんが、以下のような感じでは?
1. テキストファイルをすべて読み込んで、配列かハッシュに入れる
2. データベースの必要な中身をすべて読み込んで、配列かハッシュに入れる
3. 2. をループしながら、1に該当のものがあるかチェック
いずれにせよ、MySQL(のSQL)でどうのこうのという話ではないので、
適当な板に行った方が良い。
どうしてもMySQLなら、テキストファイルを mysql_import で読み込んで、
適当なテーブルに入れて、それで元のテーブルと比較するがよろし。
ttp://www.mysql.com/doc/ja/mysqlimport.html
0029z
04/03/23 19:31ID:asEc5Bov3日後になにかとても悪い事がおきます。
悪い事を起きさせなくするためには
これと同じ文を2日以内に、
違う所に5回書き込んでください。
5回書き込まなかった女子中学生が
書き込みを見た3日後に死にましたというnさんのレスはhttp://mbspro3.uic.to/use/4460.htnlでもききました
0030NAME IS NULL
04/03/23 19:44ID:???DfXXi8WK
なんでだろーの曲っ゚∀て入ってた?
R-774 :04/03/23 12:48 ID:
607 名前:TR-774 :04/03/23 13:34 ID:Wj14tT9S
SMキタ━━━━物です ━━(゚
)━━━━━やの━ !!
608 名前:600# :04/03/23 15:29 ID:???
>>604プロモ盤は現
609 名前:TR-774 :04/03/23 16:41 ID:LmgRN/re
いかり若い頃って球とソックリ。
卓
0031NAME IS NULL
04/03/29 07:00ID:???0032移植
04/03/29 07:03ID:???>>26
ありがとうございます。
とりあえずテキストファイルを配列に入れるところまではできたのですが
2. データベースの必要な中身をすべて読み込んで、配列かハッシュに入れる
3. 2. をループしながら、1に該当のものがあるかチェック
このあたり、とくに3のループがうまくいかないです・・・
32 名前:NAME IS NULL[sage] 投稿日:04/03/25(木) 17:20 ID:???
>>31
こういう質問の際に一番よくないのが「うまくいかない」という言い方です。
どううまくいってないのかは、やった本人で無いと判断できません。
やった内容(ソース)、期待する結果、実際の結果をすべて提示して初めて、
他者が理解できます。
ほとんどPHPの問題だと思いますので、PHPすれへ行ってらっしゃい。
0034移植
04/03/29 07:04ID:???text型のフィールドに、改行つきのテキストをinsertしたい場合は、
どういうsqlをかけばいいのでしょうか?
0035移植
04/03/29 07:04ID:???>>34
改行を \n にして insert する
http://www.mysql.com/doc/ja/String_syntax.html
0036移植
04/03/29 07:05ID:???さすがにサブクエリ使えないと大変になってきたので3から4に移行したいんですが
移行する際に注意しておいた方がいいことは何かありますか?
0037移植
04/03/29 07:05ID:???>>36
ちゃんとバックアップをとる。
0038移植・・・手持ちネタ切れ
04/03/29 07:06ID:???>>36
サブクエリだからMySQL4.0.xじゃなくて、MySQL4.1.xの選択肢になる訳だが、
まだまだ、その挙動に予断は許されないということを肝に銘じること<MySQL4.1.x
ところで、いままでMySQL3使ってったならサブクエリ無しで効率的な
作りのノウハウ溜まってると思うんだけど、全然別のDBMSからの移行案件?
0039復旧
04/03/29 11:13ID:???基本的な事だと思いますが質問させて下さい。
table1
項目1 項目2
みかん 5000
りんご 1000
ぶどう 3000
table2
項目3 項目4
すいか 1000
みかん 500
りんご 100
この2つのテーブルで
SELECT * FROM table1 left JOIN table2 ON table1.項目1 like table2.項目3
を実行した結果の
項目1 項目2 項目3 項目4
みかん 5000 みかん 500
りんご 1000 りんご 100
ぶどう 3000 NULL NULL
から
一致している行を省いたものを取り出したいのです。
具体的には'ぶどう'の行のみを抽出したいです。SQLはどう書けば良いのでしょうか。
0041復旧
04/03/29 11:14ID:???>>40
manualのSQLのどこの項目をみればいいですか?
0042復旧 俺はここまで
04/03/29 11:14ID:???>>41
SELECT の WHERE のところ。
それより先に、初心者向けのMySQLの解説サイトにあたってみるがよろし。
0043NAME IS NULL
04/03/29 11:23ID:61xeFHK0やってみたけどうまくいかなかった。
スキルある人教えてください。
0044NAME IS NULL
04/03/29 11:47ID:???004543
04/03/29 12:06ID:61xeFHK02.起動(テーブルとか作れた。まともに動いている模様)
3.Win2000上のODBCドライバで接続かけると、ODBCの設定画面が表示される。
こんな感じ。
上記3のODBCドライバは、以前Win2000Server上のMySQLとは、接続できていた。
もちろんIPアドレスや、ユーザー名等々の設定はLinuxサーバーのものに変更済
ひどいなぁ>>44はぁ、できるかできないかくらい答えなよ。
0046NAME IS NULL
04/03/29 12:51ID:???下記のどちらかを設定していないのでは?
まずWin32用のmysqlコマンドでLinux上のMySQLに接続できるか確認してみましょう。
1.RedHat7.3はファイヤーウォールでポートが閉じられており、
ポート3306を開ける必要がある。
2.MySQLインストール方法によっては初期アクセス許可ホストはlocalhostとサーバのHostnameのみで、
Win32クライアントのIPアドレスを追加登録する必要がある。
004743
04/03/29 13:10ID:61xeFHK0早速やってみるyo!!
0048NAME IS NULL
04/03/30 13:42ID:lLvBkMbMもしかして、MySQL4.0.xではサブクエリって使えないんですか?
mysql使い始めたばかりなもので....
0049NAME IS NULL
04/03/30 14:06ID:???そう。MySQL5/4.1/4.0の比較表は雑誌とか
色んなところにあるから眺めて見るよろし。
今まで無くてどうしてたのつうと、HEAPとかとテンポラリーテーブルを
利用したりしてた。HEAPはMySQLが稼動してる限り保持してるメモリー上の
テーブルだから非常に高速。特性を理解して使うと面白いよ。
005048
04/03/30 17:00ID:lLvBkMbM>今まで無くてどうしてたのつうと、HEAPとかとテンポラリーテーブルを
>利用したりしてた。HEAPはMySQLが稼動してる限り保持してるメモリー上の
>テーブルだから非常に高速。特性を理解して使うと面白いよ。
さっそく調べてみます。
どうも、ありがとうございました。
0051NAME IS NULL
04/03/30 19:11ID:???http://www.mysql.com/doc/ja/Rewriting_subqueries.html
も参照。UserCommentにも目を通すことも忘れずに。
他にはUNIONとかが無いとか言われてるけど、サポートしてる
他のDBMSだって内部的にはテンポラリー作って処理してるのが殆どだから、
SQLでサポートしていない=同等処理が出来ないということではないよ。
そのまんま移行したい向きには確かに不評だけどね。
0052NAME IS NULL
04/04/02 14:59ID:???CREATE TABLE tbl (
key1int unsigned not null,
key2int unsigned not null auto_increment,
v1date not null,
constraint pk_tbl primary key(key1, key2)
) TYPE=InnoDB;
で、There can only be one auto column and it must be defined as a key
が返ってくるんですが…。
0053NAME IS NULL
04/04/02 15:02ID:???赤帽8+MySQL4.0.18です。
0054NAME IS NULL
04/04/02 18:59ID:???複合インデックスの2カラム目にAUTO_INCREMENTを使えるのは、MyISAMとBDBだけ。
http://www.mysql.com/doc/ja/example-AUTO_INCREMENT.html
0055NAME IS NULL
04/04/06 16:38ID:???0056NAME IS NULL
04/04/08 10:59ID:Ga8b73bcPHP5系+MySQL4.1系+Apache1.3系(OpenBSD3.5予定)にするつもりですが、、、
MySQLの4.1系が正式リリースされるのは何時ごろでしょうか。
今、4.1系を使うとしても支障はないのでしょうか。
0057NAME IS NULL
04/04/08 12:16ID:???そんなに近くは無いんじゃないかな。まだアルファだし。
http://www.mysql.com/doc/ja/Nutshell_Stepwise_Rollout.html
支障があるかどうかは、どのくらいの責任を負わされるかで違うけど、
プロダクトならリリースしか使えないでしょ。
アルファじゃ、まだバグは多いと思うよ。
0058NAME IS NULL
04/04/08 15:15ID:lFZWr5DN管理者じゃなくてユーザ権限で実行ってできますか?
環境はlinuxで。
0059NAME IS NULL
04/04/08 15:26ID:???できる。というか、普通そうする。
006058
04/04/09 13:05ID:/IKfGT8fmysqlユーザじゃなくて自ユーザでなんでもできるってことだよね?
thx.
0061NAME IS NULL
04/04/09 15:35ID:???そう。共有させるならmysqlという(名前は何でも良いけど)
専用のユーザを作って管理した方が良いが、
普通に動かして使うだけなら一般ユーザでも可。
# mysqlもrootじゃない一般ユーザだが
0062NAME IS NULL
04/04/09 17:54ID:Pgr7I+KZPHP+MySQLを使った蔵書管理システムってないですか?
0063NAME IS NULL
04/04/09 18:32ID:???MySQL+Postfix+fmlの構成で
バーチャル環境のMailDir形式のMLを構築した方おられませんか?
MySQL+PostfixのMailDirまでは問題無くできたのですが、
fmlを導入してMySQLと連携させるところがよくわかりません。
Alias切れば良いのですか?
また、fmlのアカウントと参加メアドもMySQLに任せたいのですが可能ですか?
0064NAME IS NULL
04/04/09 19:55ID:???$ host www.mysql.gr.jp
Nameserver not responding
www.mysql.gr.jp A record not found, try again
$ host -t mx mysql.gr.jp myna.mysql.gr.jp
myna.mysql.gr.jp A record not found, try again
Error in looking up server name
0065名無しさん@Linuxザウルス
04/04/09 20:22ID:L5L6aQXNまじ、ファック!
0066NAME IS NULL
04/04/09 20:37ID:???http://www.tmtm.org/ja/tdiary/?date=20040408
> MySQL ユーザ会のサーバが落ちてます。ご迷惑をおかけします。
> 明日夜には復旧する予定です。詳しくはその後に。
だって。
0067NAME IS NULL
04/04/09 21:40ID:9Ju7I9bW0068NAME IS NULL
04/04/09 21:54ID:???5.0以降なら。
http://dev.mysql.com/doc/mysql/en/Stored_Procedures.html
ただし5.0はまだ開発版で、MySQL ABも"use this for previewing and testing new features"
って言ってる。
0069NAME IS NULL
04/04/09 22:09ID:???MySQL5.0がそうだけど、今のところチャレンジャー
にしか薦められないし、MySQL ABも薦めてはいない。
0071NAME IS NULL
04/04/10 00:56ID:Ab1zvxuh今最新のバージョンはいくつですか?
0072NAME IS NULL
04/04/10 01:18ID:???ブランチが複数あり、それぞれに対して最新があるのでなんとも。
取り合えずサイト行って、MySQL4.0.x系の最新をチョイス。
0073NAME IS NULL
04/04/10 01:40ID:???0074
04/04/11 12:34ID:82A44bDhが、出ました。
復旧はできたのですが、どのような場合に発生するのでしょうか?
0075NAME IS NULL
04/04/11 13:30ID:???マルチうざい。
レコードファイルが壊れてた時など。
使用してるフィルシステム絡みを疑え。
007675
04/04/11 13:43ID:???0077NAME IS NULL
04/04/11 13:50ID:???そういうときはperrorを使おう。
> perror 127
Error code 127: Unknown error: 17
127 = Record-file is crashed
007877
04/04/11 13:53ID:???http://dev.mysql.com/doc/mysql/ja/Crashing.html
007962
04/04/11 18:53ID:p27DJUO/0080NAME IS NULL
04/04/11 19:28ID:???存在はする。ただ自分が作ったのは図書館向けのシステム
(製品)として作ったので、オープンにはちと出来ない。
# 管理分だけさくっと抜ければいいんだけど。
# そこまでコンポーネント化してないので。
HotscriptかFRESHかで、個人蔵書用のデータベーススクリプトが
公開されていたと思うの参考にするといいと思う。
AmazonAPIでデータを収集する機能があるのもあった。
MySQL限定じゃなくて他のDBMS用と謳ってるのも探して味噌。
008174
04/04/11 20:31ID:???はい、マルチでやっちゃいました。お許しください。
でも、ありがとう。ペコm(_ _;m)三(m;_ _)mペコ
0083NAME IS NULL
04/04/12 04:23ID:???文字化けします〜
0084NAME IS NULL
04/04/12 10:12ID:???使える。つかドキュメント嫁
0085NAME IS NULL
04/04/12 20:49ID:???本家HPからしか購入できないんでしょうか?
0086NAME IS NULL
04/04/12 23:35ID:???パケットフィルタを何も仕込んでなかったっていうのは、すごい話だな。
0087NAME IS NULL
04/04/13 00:44ID:???うーん、パケットフィルタぐらいなら仕込んでて普通というか、
人間見落とすからフィルタしとく方が良いんだけど。
(折れは確実に見落とすと自分でも思うので入れる)
件のサーバの後方に何かある訳でなし、サービスはSMTP,SSH,
DNS,HTTP,FTPでしょ。外向けのもので特にユーザも固定されなければ、
結局はフィルタあっても殆ど意味はないんだよねぇ。
そういうところでフィルタしとけば大丈夫だったかと問われると、
そんなことはないね、という気がする。
あとは復旧だけど、そういうサーバに重要なデータが
入ってるとは思えんので、時間が掛かってるとすれば
フルバックアップがロングスパンで、結構も戻ってしまったとか
そんな感じかな。環境はもうまっさらに入れ替え/再構築だけどね。
まあ、思ってたより過去ログ検索の必要性感じたり。
余り使って利用してなかったと思ったのだけどな。
0088mysql
04/04/13 12:01ID:Zswo1rn+3時代にmysqldumpでバックアップし、サーバを4にしてからmysql<dumpで
データを戻しました
そしたらファイルサイズが3倍になりました。これはどういうことでしょう?
しかも良く調べてみると、4でchar(2)とかしても、6文字入るんですけど・・・?3倍?
どなたか、ご存知の方いらっしゃいましたらお教え願えませんでしょうか。
008988
04/04/13 12:56ID:???unicodeがからんでるっぽい
0090NAME IS NULL
04/04/13 13:11ID:???Unicodeっていうか、4.1.1から文字列型のサイズ指定の仕様が変わった影響でしょ。
http://dev.mysql.com/doc/mysql/ja/News-4.1.1.html
> CHAR, VARCHAR, and TEXT columns now have lengths measured in characters
> rather than in bytes. The character size depends on the column's character set.
> This means, for example, that a CHAR(n) column for a multi-byte character set will
> take more storage than before.
4.1.0以前はCHAR(2)は「2バイトの文字列」だったけど、4.1.1からは「テーブルのキャラクタ
セット2文字分」という意味になる。
ujisやutf8では1文字を表現するのに最大で3バイト必要なので、CHAR(n)で確保される領域
は3倍になる。
009190
04/04/13 13:12ID:???ごめん、間違えた。
> 4.1.0以前はCHAR(2)は「2バイトの文字列」だったけど、4.1.1からは「テーブルのキャラクタ
> セット2文字分」という意味になる。
× テーブルのキャラクタセット
○ カラムのキャラクタセット
009288
04/04/13 13:35ID:???レスありがとうございました。通常のドキュメント部分にはunicode対応としかなかったのですが、
変更点の方には記述してあったのですね。見落としていました。
ちなみにサーバーのデフォルトcharsetはeucで、eucは2バイト/文字だと思っていました。
そしてテーブル作成時のカラム定義で、asciiを明示すると指定バイト通りの確保だったので、unicode関連だと
思っていました。
解決しました。ありがとうございます。
0093NAME IS NULL
04/04/13 16:53ID:???0094NAME IS NULL
04/04/13 22:20ID:???JOINコマンド?
0095NAME IS NULL
04/04/13 23:50ID:LnF2L4Zbデスクトップ機(win2000)にanhttpd+php4.3.1=192.168.1.2
mysqlに test_DB を作りまして、
grant delete,insert,references,select,update on test_DB.* to [email protected] identified by 'password';
……なんつーことをして、win2000のwebサーバから接続可能にしました。
接続はOKらしく、クエリーも期待通りに返るのですが
クエリーを一発飛ばすたびに、ノートパソからビープ音が鳴ります。
うるさくて大変です。助けてください。
0096NAME IS NULL
04/04/13 23:50ID:eu/Z9Kc0ここで聞かなくてもスマートスタイルに直接聞いたら。日本での総代理店だし。
009795
04/04/14 01:26ID:???お騒がせでした。
0098NAME IS NULL
04/04/14 01:56ID:???みんなに何も還元する気が無いなら、
もうココには出てくんな。
009995
04/04/14 03:17ID:???いや、この問題のレア度さえ分からない素人だもんで。
レスもつかなかったし、もしかしてくだ質すぎたのか?と悩んだのですよ。
結局、windowsにphpを入れたとき限定の問題らしく。
C:\mysql\share\charsets\Index
C:\mysql\share\charsets\sjis.conf
を手作りしないと文字コードが解決されなくてエラーが発生、らしいです。
Indexはredhat上のmysql/以下にあるものをコピってOK。
sjis.confはネットから落とせました。
# 気がきかなかった&常識が無かったのはおれが悪かったとしても。
# 「解決方法を還元したら助かるヤツもいるかもよ?」
# という言い方にしたほうがいいですよ。
# おれぁ恐いヒト苦手だぁよ
0100NAME IS NULL
04/04/14 06:43ID:???これ、Winインストーラでphpからインストールしたとき出たぞ。てか、phpのエラーだたりしち。
phpを先にインストールすると、出る。
MySQL→phpの順番にインストールすると直る。文字コード定義ないままで直るw
なぜ?と思ったけど、よくみたらmy.iniでは明示的に言語指定してなくてwww
REMARKはずしてようがつけていようが、このエラーがでる。
0101NAME IS NULL
04/04/14 10:10ID:+XCDs49F助かった。
漏れ、デバイスマネージャからBEEP音ならないように
設定してごまかしてますた・・・
010295
04/04/14 13:31ID:???おれのように、php と mysql を別マシン(php=win mysql=linux)に入れたら
必ず出くわす問題なのかしらね。
>>101
よかったアル。
ブラウザじゃなく、プロンプトから
php ./test.php
とか実行したら、フツーにエラーメッセージ見えてたですよ。
0103NAME IS NULL
04/04/14 16:23ID:???2度ほどML見かけたが、原因解明には至ってなかった。
(報告してくる方の追究の熱心さがない&困ってない(再現しない)人多い)
ので、俺自身はbeepで悩まされたことなかったが、
何らかのレポはうれしいよ。
0104NAME IS NULL
04/04/14 18:03ID:GYHzo/KV0105NAME IS NULL
04/04/14 18:33ID:???「Windowsでおながいします」とか条件つけられて、
cygwin版ならともかく、KNOPPIX提示できるかよ。
PHPもMySQLもメイン開発者の多くはLinuxなので
どっちでも良いならUnix系、それもLinuxでやれっつうのは同意。
0106100
04/04/14 19:16ID:???phpをWin版インストーラでやるからだわ。
別サーバだたらなおのこと、明示的にMySQLの場所を教えてあげる必要があるのだもの。
>>105>>106
御目汚し陳謝。ターゲットは相手の環境で決まるもんなので、自分で選べない。
目をつぶっててくださいw
0107NAME IS NULL
04/04/15 16:34ID:???SJIS/UJISに対応させてないMySQLで
SJISやUJIS使ってるとピーピーピーピー言うな。
sjis.confやujis.confを放り込めば無問題だけど。
0108NAME IS NULL
04/04/15 20:15ID:5nd7kpFQ以下のテーブルと内容があるとします。
---------------------------------------
CREATE TABLE test (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
group_id INT,
title VARCHAR(200)
);
INSERT INTO test VALUES
(NULL, 1, 'オレって'),
(NULL, 1, 'アホだ'),
(NULL, 2, 'アホだ');
---------------------------------------
1度のSQL文で、title が、'オレって' かつ 'アホだ' で、group_id が同じ
レコードだけ知りたいのですが、そんな事できるでしょうか?
SELECT group_id from test where ??? = 'オレって' ??? = 'アホだ';
結果としてこうなるとうれしいのですが・・・
mysql 3.23.xxです。 よろしくです。
+----------+
| group_id |
+----------+
| 1 |
+----------+
0109NAME IS NULL
04/04/15 20:31ID:???自己結合すればいけるでしょ。
select a.group_id from test a, test b where a.group_id = b.group_id and a.title = 'オレって' and b.title = 'アホだ';
0110NAME IS NULL
04/04/15 20:39ID:5nd7kpFQおかげで出来ました。
勉強になりましたぁ。
0111NAME IS NULL
04/04/16 21:36ID:NhhNWMg81, 2, 3, 4 ,5の順番でレコードが並んでいるテーブルがあるとします。
ここでレコード3をDELETEして1, 2, 4, 5とし、さらにレコード6, 7を
一個ずつINSERTで追加すると、レコードの並びが1, 2, 6, 4, 5, 7と、
最初に追加したレコードがDELETEした位置に入ってしまいます。
1, 2, 4, 5, 7となるように、末尾にレコードを追加していく方法は
ありますでしょうか?
ググッてはみたのですが、理解可能な範囲では解決に至りませんでした。
mysqlは、Ver 12.21 Distrib 4.0.15, for suse-linux (i686)で、操作は
ターミナルからmysqlclientで行っています。
よろしくお願いします。
0112111
04/04/16 21:38ID:???× 1, 2, 4, 5, 7となるように、末尾にレコードを追加していく方法は
○ 1, 2, 4, 5, 6, 7となるように、末尾にレコードを追加していく方法は
0113NAME IS NULL
04/04/16 22:09ID:???一般に、「レコードが格納される順番」を指定する方法はない。
データがどういう風に格納されているかなんて、テーブル形式に依存するし。
たいていのテーブル形式ならいったん全レコードを削除してinsertしなおせばその順で入る
と思うけど、保証されてるわけじゃないしね。
本当の目的は、「"select * from 〜"としたときに、指定した順番でレコードを取得したい」
ってことじゃないの?
それなら、select文にorder byをつければソートされる。
http://dev.mysql.com/doc/mysql/ja/Sorting_rows.html
0114111
04/04/16 22:36ID:???理解できました。ありがとうございます。
レコードをINSERT順に閲覧するような場合 、例えばttp://bbs.teacup.com/
のようにメッセージをページで分けて順番に表示するようなスクリプトであれば、
SELECT … LIMIT *, * で必要なレコードを順番に取り出して表示できれば楽かな、
と思った次第です。
それで、実際にPHP+MySQLで書いてみたのですが、上記の方法ではレス順が
変になって頭を抱えていた所でした。
0115NAME IS NULL
04/04/16 23:56ID:5D3jc9/vテーブルを作成しようと試行錯誤中なのですが、Typeがdataの行で
シンタックスエラーが出てしまいます。
birthday data,
family int
);
とすると data以下の文がエラー表示されます。
構文の使い方が間違ってるのでしょうか?
ぜひご指導下さい、お願いします。
0116NAME IS NULL
04/04/17 00:08ID:???なんか設計が間違ってるんじゃないの。
削除したときは、マークをつけて表示しないだけにする、とか、
idをauto incrementにして、order by id desc とする、とか、
あとは、now()とかで、日付を入れて、それでソートするかだね。
0117NAME IS NULL
04/04/17 00:14ID:???日付型は「data」じゃなくて「date」だよ。
http://dev.mysql.com/doc/mysql/ja/Column_types.html
0118115
04/04/17 00:30ID:???すみません、粗相しました..
ご指摘感謝します。
ふと気が付くといい時間だ、、(´Å`)
0119111,114
04/04/17 00:39ID:???TNX。
とりあえず、UPDATEはINSERTの位置に影響しないようなので、「非表示」フィールドを増設して、
削除に見せかけてUPDATEで非表示フラグを立て、表示時に「あぼ〜ん」に置換するようにしますた。
今のところ、問題なさそうです。
もっと複雑な抽出を行う場合には、おっしゃる通りオートインクリメントのインデックスか日付で
ソートすることにします。
0120NAME IS NULL
04/04/17 13:32ID:GS815qp5どうしても分からないので教えて欲しいのですが
まず、下のようなテーブル(テーブル1)を作っておいて
性別コード(プライマリキー) 性別
1 男
2 女
次に番号(プライマリキー)、名前、性別コードからなる
テーブル(テーブル2)をつくり、この2テーブルを性別コードで
結びつけてクエリを作成しました。こうして出来たクエリに
番号、名前、性別コードを入力すると、性別が表示されるようにしたいため
クエリデザインに
SELECT
`テーブル2`.`番号`,
`テーブル2`.`氏名`,
`テーブル2`.`性別コード`,
`テーブル1`.`性別`
FROM `テーブル1` `テーブル1` right join
`テーブル2` `テーブル2` on
( `テーブル1`.`性別コード` = `テーブル2`.`性別コード` )
としましたが、編集と新規レコード作成が出来ません。
ただし、それぞれのテーブル名を入れ替える
(テーブル1→2、2→1)とすると、うまくいくのですが
ネイティブSQLモードだとだめになります。
こういったことを可能にするには、どうすればよいのでしょうか。
0121NAME IS NULL
04/04/17 14:12ID:???JDBC経由だと余り動作がそぐわなかった気がする。
追試してないし、それと同じ現象ではないけど。
unixODBC経由では駄目?
0122120
04/04/17 14:29ID:GS815qp5使用環境はWindowsXPhomeです。
ちなみに、MyODBCでも同じくうまくいきませんでした。
0123NAME IS NULL
04/04/18 14:27ID:rThR8htn0124NAME IS NULL
04/04/18 14:47ID:???DAO/RDO/ADOお好きなように。
0125NAME IS NULL
04/04/18 15:09ID:sQJEfw060126NAME IS NULL
04/04/18 15:29ID:???MaxDBもあるし、それ(純粋な勘定系)は無いんじゃないかと。
0127NAME IS NULL
04/04/18 17:00ID:sQJEfw06ナノテク、遺伝子、宇宙産業?
俺はお坊さん相手にお布施管理するDBなんか作ろうと思ってる。お布施の25%頂くシステムにしてさ
0128NAME IS NULL
04/04/18 21:42ID:???0129NAME IS NULL
04/04/18 21:59ID:NU/tC3gk「Under Construction」となってたんですが。。。
この状態、しばらく続くのでしょうか?
0130NAME IS NULL
04/04/19 09:43ID:???続くんかどうか走らんけど、以下の二つさえ見れれば問題無いっしょ?
ML過去ログ
http://www.mysql.gr.jp/mysqlml/
日本語マニュアル
http://dev.mysql.com/doc/mysql/ja/
0131NAME IS NULL
04/04/19 14:31ID:rs0zt2U40132NAME IS NULL
04/04/19 20:24ID:???日本語まわりで文字化けする様なDBはまともな大手企業は使わないと思われ...
えらそうな能書きいいからはよなおせと言いたい
0133NAME IS NULL
04/04/19 20:37ID:???えらそうな能書きはいいから、自分の足りない知識を治せとあんたに言いたい。
0134NAME IS NULL
04/04/19 20:50ID:???うだうだはいいから...どうせ何も知らんのだろ
0135NAME IS NULL
04/04/19 20:52ID:???MySQLのバージョンとテーブル/クライアントのキャラクタセットは?
ujis(EUC-JP)だったら化けて当たり前。
sjis(Shift_JIS)でも、化けても仕方ない(まず大丈夫だと思うけど)。
Windowsクライアントから入力した丸付き数字が化けないことを確実にするには、
・MySQL 4.1以降を使い、テーブルのキャラクタセットはutf8/ucs2を使う
・Windowsは98以降を使う、もしくはIE4.0以降をインストール
・Windowsクライアント側で文字をUTF-8/UCS-2に変換する
(Webアプリなら、FORM要素でaccept-encoding="UTF-8"とするなど)
…とすればいい。
WindowsのMultiByteToWideChar APIは、「機種依存」の丸付き数字をUnicodeで規定する
丸付き数字に変換してくれる。
0137135
04/04/19 21:07ID:???連続書き込みスマソ
0138132
04/04/19 21:18ID:???thanks.m(_ _)m
MySQL 4.0 を Windows XP や RedHat Linux 9などで使用してます。
4.1 はプロダクトリリースでないのが気になりますね...
0139135
04/04/19 22:16ID:???まあ、4.0以前でもサーバのキャラクタセットをsjisにしておけばまず大丈夫でしょ。
3.23で4年間くらい使い続けているDBがあるけど、そいつで丸付き数字やローマ数字や
「(株)」なんかが化けたことは一度もないし。
0140NAME IS NULL
04/04/19 22:49ID:???JDBCの設定間違えると通らないけどね。
0141NAME IS NULL
04/04/20 09:17ID:???どんな設定してんだ??
0142NAME IS NULL
04/04/20 09:45ID:???>>132がどういう構成で使っているのかわからないから適当な推測だけど、テーブルにデータ
を入れる前の段階か、テーブルからデータを取得した後で化けてるんじゃないの?
未定義領域(空き領域)の文字をどう扱うかは実装に強く依存するから、おかしくなっちゃっても
仕方がない。
実際、iconvで変換しようとするとエラーになる。
0143NAME IS NULL
04/04/20 11:14ID:???0144141
04/04/20 22:08ID:???うちLinuxで、MySQL+PHPだけど、全部EUCで使ってる。
php.iniとmy.cnfの設定うまくやれば何も問題ないでしょ。
TEXT型で何もいじらず突っ込んでやれば、文字化けしないですよ。
0145NAME IS NULL
04/04/20 23:46ID:???間違えすぎ。名前の由来的には近いんだろうけど。
0146ISNULL
04/04/21 01:04ID:4FKx9ggiQuery Browser + Administratorで、CCはお役御免となる予定。
0147NAME IS NULL
04/04/21 15:23ID:???タブ区切りのテキストデータをインポートしたいのでつがうまくいきません;;
テキストファイル名:d_log.sql
データベース名:logdb
テーブル名:d_log
$ mysqlimport logdb d_log.sql -u root -p
Enter password:
mysqlimport: Error: Can't get stat of '/home/log_user/d_log.sql' (Errcode: 13), when using table: d_log
エラーの意味が・・・
0148NAME IS NULL
04/04/21 16:04ID:???statが失敗するってのは、そのファイルにアクセスできないってこと。
ファイルや置いてあるディレクトリのパーミッションは大丈夫?
それと、perrorを覚えておこう。
> perror 13
Error code 13: Permission denied
0149NAME IS NULL
04/04/21 16:44ID:KvwDPFw5Error code 13ってのは「Permission denied」でしたか^^;
参考になりました
これからアクセス権を確かめてミマス^^
0150NAME IS NULL
04/04/22 11:06ID:JQN0J6g1Host/Server Name(or IP)のあたりどうすりゃいいの?
スキルある人教えてください。
0151NAME IS NULL
04/04/22 13:38ID:???マルチうざ
・動的アドレスではなく固定アドレスを利用する
・DNS(or Windowsの名前解決)を利用する
かな。
0152NAME IS NULL
04/04/22 14:27ID:???ばかじゃないの
0153NAME IS NULL
04/04/24 00:29ID:???mysqlshow: Can't connect to local MySQL server through socket '/tmp/mysql.sock'
になる。
MySQLは立ち上がってる(?)
ps -ax | grep mysql
3598 p1- S 0:00.01 sudo /usr/bin/mysqld_safe --user=nemu --default-cha
5485 std R+ 0:00.00 grep mysql
どうすりゃいいんだYO エロい人達
てか、'/tmp/mysql.sock' こんなファイル無いし
0154NAME IS NULL
04/04/24 02:27ID:???そのMySQLはどうやってインストールしたん?
どこぞのバイナリーパッケージを利用したのなら
そのパッケージのレイアウトに合わせて
sockファイルの位置の設定を見直したか?
ソースインストールをベースに書かれてる本とかの記述を
そのまま適用しようとしてないか。
MySQLデータベースから時間を表示させたいんですけど、どうしたらいいでしょうか?
ブラウザからサーブレットを使い、データベースに時間を記録させ、再びデーターベースからその時間を取りだし、ブラウザに表示させる
っていうのを作りたい。
0157NAME IS NULL
04/04/24 14:48ID:???元からインストールされていてそれってのはスゴいね。
可能性としては
・サーバはUNIXドメインのソケットを使っていない
・ソケットのパスがサーバとクライアントで合っていない
くらいかな。
以下を確認してみるがよろし。
1) 起動スクリプトでパスが指定されていないかどうか
2) netstat/sockstat
3) クライアントからTCP/IPで接続(--host=127.0.0.1)
あと、>>153でpsの結果が切れているので、"ps axww|grep mysql"としてみて。
>>156
select now();
他にも時間関係の関数はいっぱいあるので、
http://dev.mysql.com/doc/mysql/ja/Date_and_time_functions.html
あたりで調べてくだちい
0158NAME IS NULL
04/04/24 17:47ID:???Mac OS X 10.x "Server"だとプレインストールされてるんやね。
http://dev.mysql.com/doc/mysql/ja/Mac_OS_X_10.x.html
configureオプションで特に変更してないようなので、
ソケットファイルは、デフォルトの/tmp/mysql.sockの位置で
全体的に設定済みの模様
取り合えず
http://dev.mysql.com/doc/mysql/ja/Can_not_connect_to_server.html
を参考に原因を特定してみてください。
/tmp/mysql.sock自体が見当たらないので
・mysqld が動作していない。
のような気がしますな。
0159NAME IS NULL
04/04/24 19:01ID:???Javaのスレいって聞いた方がいい
0160153
04/04/24 19:53ID:???レスありがとう。
うちの会社は誰もわかんなかったのにすごいですね(w
書いてある事やリンク調べてやってみます。
>>157
$ ps -axww | grep mysql
3598 std- S 0:00.01 sudo /usr/bin/mysqld_safe --user=nemu --default-char
acter-set=ujis
13044 std S+ 0:00.00 grep mysql
0161158
04/04/24 20:21ID:???mysqldは動いてるので、その後から探ってください。
0162156
04/04/25 04:26ID:???レスどうもです。
サーブレット内で、 Date currentDate = new Date()等の時間を得るコードを使おうとするエラーが出ちゃうんですね
0163NAME IS NULL
04/04/25 16:18ID:???いよいよもって「スレ違い」
0164NAME IS NULL
04/04/26 05:02ID:???ここの皆さんは必要としていないから?(w
0165NAME IS NULL
04/04/26 09:09ID:???説明PDFならユーザ登録すればもらえるよ。
読んだけど良く分からん。@ITの解説に期待。
0166NAME IS NULL
04/04/26 20:53ID:???マルチマスタレプリケーションが可能なのかな??
0167NAME IS NULL
04/04/26 23:40ID:n+uz+Zmbを探しているのですが、なかなか見つける事が出来ません。
どこかにありませんでしょうか?unix用のが使えるかと
思ったのですが、インストールできないんです。
javaの研修でjava.sqlパッケージを使いたいのですが、
自宅での勉強となると勝手がよく分からなくて・・・。
知っている方情報をお願いします。
0168NAME IS NULL
04/04/27 00:34ID:???unixODBCでいいんじゃないの。MySQL側は純正のMyODBCで。
0169NAME IS NULL
04/04/27 09:57ID:???ってかODBC必須なの?Mac + Java + MySQLならJDBCでOKだよ
0170167
04/04/27 20:14ID:UnVBLNHf書いて有ったので必要かと思ってました。
色々調べたところ、ようやく解決策が見つかりました。
ご参考までに、以下のアドレスで見つかりました。
www.cosmos.ne.jp/~kaz6120/maclib/mysql/index.pl?id=faq03
0171167
04/04/27 20:15ID:UnVBLNHf168-169さん、ありがとうございました。
0172153
04/04/29 02:15ID:zNI5ITTXmysqlのプロセスを殺して起動しようと思ったら
起動できなくなっちゃいました。
rootになっての作業です。
MacOSX Serverの環境です。
なんとか立ち上げて使える状態にしたいです
$ mysqld_safe --user=root --default-character-set=ujis &
[1] 433
$ touch: /var/mysql/nemu.err: No such file or directory
chown: /var/mysql/nemu.err: No such file or directory
Starting mysqld daemon with databases from /var/mysql
/usr/bin/mysqld_safe: line 306: /var/mysql/nemu.err: No such file or directory
/usr/bin/mysqld_safe: line 1: /var/mysql/nemu.err: No such file or directory
tee: /var/mysql/nemu.err: No such file or directory
040428 13:05:55 mysqld ended
tee: /var/mysql/nemud.err: No such file or directory
↓エンターキーを押すと勝手に終了してしまう
[1] Exit 1 mysqld_safe --user=root --default-character-set=ujis
/varの直下にmysqlなんてディレクトリがない。
$ ps -ax | grep mysql
593 std R+ 0:00.00 grep mysql
立ち上がらない。。。。。
Mac板で聞くべきですか?
0173153
04/04/29 02:16ID:???0174157
04/04/29 09:53ID:???データディレクトリがないからエラーになってるね。
>>153の時点では動いてたってことは、>>153とはディレクトリの指定が違うか、もしくはディレクトリを
削除しちゃったか。
どちらにしても、mysql_install_dbを実行すればディレクトリとmysqlデータベースが作られる。
Mac OS X Server固有の部分については、
http://www.apple.co.jp/server/documentation/
あたりを読むなりMac板に行くなりした方が詳しい情報を得られると思う。
個人的には、プリインストール版で悪戦苦闘するくらいならmysql.comの公式パッケージを使って
http://dev.mysql.com/doc/mysql/ja/Mac_OS_X_installation.html
の記述に沿って設定したほうが早いんじゃないかと思うけど。
0175NAME IS NULL
04/04/29 17:09ID:pO2jUQrEメールボックスにメールがたまる。
これってMySQLからのメッセージ?
無視しつづけるとどうなるの?
サーバーが遠隔地で動いてて、日常的なメンテナンスができない。
ほっといてもいいのか、メールを削除しなきゃいけないのか、
詳しい人教えてください。
0176NAME IS NULL
04/04/29 18:34ID:???エスパーは滅多にいない。
cronjobで回してる奴のメールか何かが
飛んで来てるんじゃないのか?
0177NAME IS NULL
04/04/29 22:28ID:???サーバって遠隔地にあるのが普通でしょ。
メンテの度にデータセンターまでいくの?
まぁ、どんな内容のメールか分からないと判断のしようが無い。
crontabが原因なら、/etc/crontabの記述を見直すべき。
0178NAME IS NULL
04/04/30 10:47ID:???sshは?
うちはルーターまでsshで、データセンター内のローカルはtelnetで操ってるけど。
0179NAME IS NULL
04/04/30 15:19ID:???hogeidをユニークにしたけど、やっぱやめたくなった
でもやめる方法がわからない
0180NAME IS NULL
04/04/30 15:25ID:???これではダメだった。
0181NAME IS NULL
04/04/30 16:42ID:???alter table hoge drop index hogeid;
http://dev.mysql.com/doc/mysql/ja/ALTER_TABLE.html
0183NAME IS NULL
04/04/30 20:20ID:???MySQL 4.0 にアップデートしようとしているのですが、
依存関係の解消ができず、困っています。
Perl-DBD-MySQL
php-mysql
mod_auth_mysql
を要求されたバージョンにアップデートしたのですが、
今度は、libmysqlclient.so.10 というファイルが原因でアップデートできなくなっています。
いろいろ調べたのですが、このlibmysqlclientの問題を片付けるには
どうしたら良いのか分かりませんでした。
0184NAME IS NULL
04/04/30 20:44ID:???もうちょっと詳しく書いておくれ
MySQL4.0はどこの何を、どんな感じに入れようとしてるのか。
libmysqlclient.so.10が必要とされてるのなら入れればいいだけ
但しlibmysqlclient.so.10は現状でも入ってる筈なので、
そのインストールorリビルドで想定される位置に見つからない
というだけだと思うよ。
0185184
04/04/30 20:50ID:???RHL9用のバイナリーパッケージはFedoraCoreでも使えるので、
それを入れるという手もある(サポートは有償)
http://www.softagency.co.jp/mysql/LAMP/download.html#aka9
サードパーティ製のパッケージになるので、所謂"系"が
純正とは異なる点には注意した方が良いけど。
0186NAME IS NULL
04/04/30 20:56ID:???インストールしたのは米国本家のサイトからミラーサイトをたどって法人のところから
以下の RPM をダウンロードして
MySQL-Max-4.0.18-0.i386.rpm
MySQL-client-4.0.18-0.i386.rpm
MySQL-devel-4.0.18-0.i386.rpm
MySQL-embedded-4.0.18-0.i386.rpm
MySQL-server-4.0.18-0.i386.rpm
MySQL-shared-4.0.18-0.i386.rpm
それぞれを
rpm -Uvh
でアップデートを書けた際に、依存関係に問題があるぞと
警告されたので、
Perl-DBD-MySQL
php-mysql
mod_auth_mysql
を要求されたバージョンのものをダウンロードしてアップデート。
そして、
rpm -Uvh MySQL-server-4.0.18-0.i386.rpm
でエラーが出て、
rpm -Uvh MySQL-shared-4.0.18-0.i386.rpm
からアップデートしてみたら、
libmysqlclient.so.10 is needed by (installed) Perl-DBD-MySQL.
libmysqlclient.so.10 is needed by (installed) php-mysql
libmysqlclient.so.10 is needed by (installed) mod_auth_mysql
みたいなことを言われてたかな。
0187188
04/04/30 20:59ID:???X Windowが正常動かなかったり、
Cannaがまともに日本語を変換できなかったりして投げ出した経験有り。
今回頑張っているのは、最近PHPとMySQLを連携させることができるようになって
それなら、ローカルで実験できる環境をと思ってFedoraに再挑戦。
MySQLをアップグレードしようと思った動機は、
InnoDBを利用したいからです。
0188NAME IS NULL
04/04/30 21:02ID:???http://www.atmarkit.co.jp/flinux/rensai/linuxtips/425rpmrhl.html
ちょっと試してみます。
祝日なのにもかかわらず、昨夜は徹夜で仕事だったので、
確認は明日になってしまいます。
0189153
04/04/30 21:41ID:???レス遅くなって申し訳ないっす。
事故解決できました。
原因はhostnameが間違っていた(?)っぽいです。
いろいろなアドバイス本当にありがとうございました
みなさんもありがとうございました
0190NAME IS NULL
04/05/01 00:16ID:RzlmJYS+「MySQLサーバーをSJISやEUCで立ち上げると、
PHPを通じたMySQLの
操作がうまくいかないことがあります(PHP4の日本語対応が
不完全なため)」
と書いてありますが、
どういう時にうまくいかないのでしょうか?
0191NAME IS NULL
04/05/01 00:23ID:???帰れ
0192NAME IS NULL
04/05/01 01:32ID:???一時期、2バイト文字を処理するために必要なものを外したPHP4の
バージョンがあったため。
なので、該当するバージョンのPHP4を利用している場合は、
アンインストールして、自分でソースからコンパイルしないといけないのだよ。
でも、その本を読んでいると言うことは、Windowsで試そうとしているのでは?
だったら、Windows版のPHP4なら心配いらない。
0193NAME IS NULL
04/05/01 03:13ID:???「PHP4の日本語対応が不完全なため」じゃなくて
筆者の理解不足と説明能力の無さだ。
とんでもない記述だな>その本の作者
>どういう時にうまくいかないのでしょうか?
PHPの出力エンコーディングとMySQLのエンコーディング設定が違うと、
当たり前ですが問題が起こるでしょう。但しHTTPの出力エンコーディング
に関しては、mbstring.http_output設定ディレクティブがあり、きちんと
設定及び機能していればHTTP出力については自動変換されます。
これはあくまでもHTTP出力(CLIでのコンソール出力もそうかな)に
ついてのみで、ファイルシステムやDBMSへの出力は含まれません。
(長くなる&PHPの話なのでレスを分けて続けます)
0194193
04/05/01 03:17ID:???MySQLと関わってくるのはmysql関数で与える引数の文字列の部分。
PHPは8bitスルーなので、PHPスクリプトをEUC-JPで書き、MySQLをujisに
設定していれば、mbstringモジュールが組み込まれていなくても関係ない。
スクリプトをEUC-JPで書き、MySQLをsjisにしていた場合は
mbstringモジュールをPHPに組み込み、自前で変換するのが一般的。
一部のバイナリ(まあRHLなんだが)はデフォルトでこのモジュールを組み込んでいない。
スクリプトのエンコーディングにSJISを使うのは特殊なケースであり
(日本ローカルでWindowsの環境という区分ではそうではないが)
これは8bitスルー出来ないので、PHPではSJIS→Unicode(PHP内部)→SJIS
という正直"無駄な"処理をしています。これを行うのがconfigure
オプションの--enable-zend-multibyteで、mbstring関数を組み込むオプション
--enable-mbstringとは別のものです。
"無駄な"処理であるが故に、PHPプロジェクトではこのオプションを
有効にしてビルドしたバイナリーはWindows版も含め配布していません。
unix系なら、有効にした私家バイナリーか自分でビルドを行う。
Windowsの場合は廣川さんがマメに対応されているので
ttp://www.geocities.jp/rui_hirokawa/php/win/
から入手するのが良いでしょう。
0195193
04/05/01 03:27ID:???書き方すると思ってる人なんだけどな>件の本の筆者
PHPのInput/Outputフィルタや出力バッファのあたりは
判りにくいし、PHPを使ってる人でも良く理解してない
人も多いからしようがないのかね。
0196NAME IS NULL
04/05/01 05:04ID:???自分の環境で試してみて、動かないときに尋ねるのがこのスレの使い方では?
>>193氏が丁寧なので助かってるけど、書籍からの抜粋だけで書くのは失礼かもネ。
0197193
04/05/01 05:28ID:???本来のQ&A的なもののAnsは>>193で終わってて
元質問者の意図から外れて話を長くしてるのは私かな。
2chやMLもそうだけど基本はQ&Aで、順を追って
進行していくものは、解説サイトや関連ドキュメントの
チュートリアル、書籍の役割であることは確かですね。
0198NAME IS NULL
04/05/01 12:17ID:LDZkZmvJmysql.user テーブルに最初から 'grande' というホスト名の
エントリがありますが、これは何に使われるのでしょう?
マニュアルや FAQ には書いていないようです・・・
0199NAME IS NULL
04/05/03 12:47ID:HGQy7ezBSJISとかも使えると解釈してよろしいんでしょうか?
--with-extra-charsets=all これは、デフォルト以外の文字サポートをすべてに設定するとか書いてあったのですが、
テーブルを作る際、設定さえしてあげれば、どんな文字でも使えるって事ですか?
google漁ったんですが、設定だけで、設定の意味が書いてあるところがあまりなかったので質問させてください。
よろしくお願い致します
0200NAME IS NULL
04/05/03 18:42ID:???導入方法とか環境とか簡単に教えてもらえるとうれしいです。
0201NAME IS NULL
04/05/03 18:46ID:2OY0WF1Zものなんでしょうか?
皆さんは何の文字コード使ってるんですか。
0202NAME IS NULL
04/05/03 19:13ID:???UJIS
0203あぼーん
NGNG0204NAME IS NULL
04/05/03 22:16ID:???--with-charsetオプションて確か、そのエンコーディングしか
組み込まなかったと思われ。sjisも使うのなら
--with-charsetをujisとして、--with-extra-charsetsにcomplexかall
んで、my.cnfで変更。
>テーブルを作る際、設定さえしてあげれば、どんな文字でも使えるって事ですか?
使ってるバージョンが不明だが、現在の安定版で指定できるのはサーバ単位で、
テーブルやデータベースではない。マニュアルのリリースのところ参照
>>201
ujis。sjisは使うこともあるけど、積極的には使ってない。
latin1は"海外サーバ利用者"向けの動作確認用として指定してる。
0205NAME IS NULL
04/05/05 16:05ID:???MySQLってコマンドプロンプトで操作するんですよね?
0206NAME IS NULL
04/05/05 16:07ID:???|
J
( ´_ゝ`)フーン
0207NAME IS NULL
04/05/05 17:57ID:???Win2000推奨説明だから、脳みそ空っぽの俺では導入で躓きまくりだし。
もう一冊別の本を買ってくるとしよう。
0208NAME IS NULL
04/05/05 18:15ID:???それが普通だが、へタレには
http://www.mysql.com/products/administrator/
(MySQLCCより管理機能が充実)
http://www.navicat.jp/product/
他のWebアプリ系のツールはDBMSの管理機能はちと弱いね。
DBの管理機能は充分だと思うけど。
0209NAME IS NULL
04/05/05 18:55ID:???「Win98seの環境で」が間違ってると、早く気づいたほうがいいぞw
0210NAME IS NULL
04/05/05 22:04ID:???だよね、それは分かってはいるんだけど、
自分の環境では2kにする余裕も時間もないのよ。・゚・(ノД`)・゚・。
勉強の為だから、なんとか現状でどうにかするしかないっす。
0211209
04/05/06 01:40ID:???それが「わかってない」
Win9x系はメモリ管理がMS-DOSの1M規制をひきずってるから、
「アプリが用事があるときメモリ確保して、用事が済んだら解放する」ようになっていない。
すなわち、WinNT/2000やUnixのように、サービスやデーモンを常駐させる仕掛けが、そもそもないのさ。
解説本がWin2000ターゲットなのは、「ServerだろうがProだろうが、同じ説明で成り立つ」から。
WinNTだとServerとWorkstationで違うし、さらにWin9xだと違う。
∴個人環境をWin2kProにしてから、ローカルでApache稼動が正しいw
まぁ「動く」と書いてあるから、ガンガッテくれ
http://dev.mysql.com/doc/mysql/ja/Win95_start.html
0212NAME IS NULL
04/05/06 04:11ID:FvG07aAAmysql_installation_directory/var/ に初期データが作られるんでしょうか?
mysql_installation_directory/data/ とかディレクトリィ作ってそこにデータを入れるようにすることとかは出来ますか?
0213NAME IS NULL
04/05/06 04:41ID:???出来る。起動オプションまたはmy.cnfに記述する設定のところを見てみ。
0214NAME IS NULL
04/05/06 10:12ID:???いい覚え方を教えてください。
0215NAME IS NULL
04/05/09 06:04ID:0+Uhj792mysql-3.23.58-winをインストールした後、ワケあって一旦削除してから
もう一度インストールし直そうと思ったのですが、何故かアンインストール後setup.exeをクリック
しても何も応答しなくなってしまいました。何度か再起動をかけてやり直してもダメです。
アンインストールはコントロールパネルのアプリの追加と削除から行いました。
それとCドライブのmysqlフォルダとwindowsフォルダのmy.iniファイルの削除を行いました。
一つ気になる事は、アンインストール時にmysqlを停止しないで行ってしまった事です。
(再起動をかける時にアンインストールを行ったハズなのにWinMYSQLAdminの画面が出て「ユーザが
見つかりません」みたいなエラーが出ました)
OSはwindows98を使用しています
分かる方いましたら、教えて頂けないでしょうか
0216NAME IS NULL
04/05/09 07:00ID:???exe実行したまましばらく(10分位)したらインストールウィザードが起動しました・・・
うう
0217NULL NULL NULL
04/05/09 12:39ID:Iib19Uod今度 出るQuery Browserを使えば、コマンドプロンプトからは
操作する必要は無くなる。
と、カンファレンスで説明していた。
0218NAME IS NULL
04/05/11 14:58ID:o9OBMzN70219NAME IS NULL
04/05/11 15:36ID:???SHOW CREATE DATABASE/TABLEステートメントで個別に取得してもいいけど
簡単なのはmysqldumpツールかな。通常はDDLとDMLが出力されるけど、
オプション--no-dataでDDL関連だけの出力になる。
http://dev.mysql.com/doc/mysql/ja/mysqldump.html
DDLの方言や他のDBMSで悪さするような部分は
自作ツールでも作って変換して対応してください。
0220NAME IS NULL
04/05/11 16:48ID:o9OBMzN7有難う御座います。
早速試してみます。
0221NAME IS NULL
04/05/11 18:58ID:f5VBBbVr同じテーブルの別レコードにコピーしたいのですが
簡単に行う良い方法はありませんでしょうか?
0222NAME IS NULL
04/05/11 19:06ID:???INSERT INTO table_2 (d_1,d_2,d_3) SELECT s_1, s_2, s_3 FROM table_1
でどう?
0223NAME IS NULL
04/05/11 19:07ID:???しつれい、同じテーブルでしたか
TEMPORARY TABLE使えばできそうだね
0224NAME IS NULL
04/05/11 19:42ID:Jo8RlfWBMySQLをPerlから操作しようとしました。
そしたらinstall_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC ...
とエラーがでました。
恐らくモジュールが入ってないのかと思いますが
どうすればインストールできるでしょうか。
一応、Msql-Mysql-modules-1.2219と言うのをDLしてきましたが
root権限など持っていないので説明にある方法ではインストールできません。
cgiとおなじフォルダにmysql.pmを置いてやれば動くような気もしますが
取り敢えず/mysql/libの中身をまるごと置いてやっただけでは動きませんでした。
0225NAME IS NULL
04/05/11 20:37ID:???どこでスレ違いと言われたのか知らんが、
ここでも微妙にスレ違い(最適ではない)だと思うのだが?
WebProg板のPerl::DBIスレ
http://pc5.2ch.net/test/read.cgi/php/1015943725/
Perl::DBIは必ずしもWebプログラムだけで使う訳でも
無いので普通のプログラム板にも同種のスレがあるかも
繋げられるようになったら、またこちらにどうぞ。
Perlでの組み方はそのままPerl::DBIスレで訊いた方が良いと思うけど。
0226NAME IS NULL
04/05/11 22:41ID:???有難うございます、ではそちらで伺ってきます。
0227NAME IS NULL
04/05/13 19:01ID:1cLW+KW3ASPからレコードを追加する際,「\」の文字が入っているものが文字化けしてしまいます
現在は「\」の文字があった場合「\\」に置換する処理をASPで行って対処しているのですが
他に何か気をつける問題はあるのでしょうか?
0228NAME IS NULL
04/05/14 16:26ID:???Keyのところの解説ってどこにある?
PRIとUNIはわかったけど MUL が意味不明
0229NAME IS NULL
04/05/14 16:58ID:???"MUL"は重複を許すインデックスのこと。
PRIMARYでもUNIQUEでもないインデックスとか、UNIQUEでもNOT NULLを付けてない
インデックスとかは"MUL"になる。
http://dev.mysql.com/doc/mysql/ja/DESCRIBE.html
http://dev.mysql.com/doc/mysql/ja/Show_database_info.html
0230NAME IS NULL
04/05/14 17:08ID:???MULti
0231NAME IS NULL
04/05/14 19:05ID:???そうなんだ
UNIQUEにしたやつについたからてっきり
NULLを許すUNIQUEフィールドかと思った
0232230
04/05/14 21:11ID:???正しい英語だとMULtipleか。
MULは重複した値を許すキーであることを意味する。
>NULLを許すUNIQUEフィールドかと思った
まあそれでMULになってるのだが「NULLを許して且つUNIQUE」
というのはないので、UNIQUEキーかというと「違う」
UNIQUEキーならNOT NULLが前提。
0233NAME IS NULL
04/05/14 21:26ID:???0234NAME IS NULL
04/05/14 21:53ID:???0235NAME IS NULL
04/05/17 15:46ID:???SELECT * FROM テーブル名 WHERE 列名 like '%〜〜%'
の逆で
SELECT * FROM テーブル名 WHERE '〜〜' like %列名%
のような処理はできないでしょうか?
また擬似的に上記のような処理を行うようにはできないででしょうか?
どなたかご教授ください。
0236NAME IS NULL
04/05/17 16:10ID:???PHPかなんかと組み合わせて
テーブル名を先にゲットしといて
select * from foo,bar;
とやるしかないなポルナレフ
0237NAME IS NULL
04/05/17 16:32ID:???お返事ありがとうございます。
テーブル名ももってくるのですか?
すいません。よくわからないのですが、もう少し説明していただけますか?
自分で考えたのは、
列名のデータをすべてひっぱってきて、そのデータにたいして
PHPなどで、ひとつひとつ'〜〜'と比較しようかと思っていたのですが、
ページング処理なども加えようと思っているので、
これでは煩雑になりすぎそうな感じなので、SQLでできないかと思ったのです。
わかりずらくてすいません。
0238NAME IS NULL
04/05/17 17:56ID:???select * from テーブル名 where instr('〜〜', 列名) > 0
って話?
それとも、列名そのものを使って何かを検索するの?
0239NAME IS NULL
04/05/18 08:03ID:???クリリンのことかーーー!!!
0241NAME IS NULL
04/05/18 13:36ID:BZbmry73select文一発にて、 品名計、商品コード計、総合計 をゲットできないものか。
0242NAME IS NULL
04/05/18 14:14ID:???0243NAME IS NULL
04/05/18 18:02ID:???0244NAME IS NULL
04/05/18 19:06ID:???0245NAME IS NULL
04/05/18 19:19ID:???あと数週間、あと数週間といわれ続け、もう5月半ば過ぎ。
いい加減にしてくれ。
0246NAME IS NULL
04/05/18 19:59ID:???明日まで待ってくれ!
0247NAME IS NULL
04/05/18 20:31ID:???0248NAME IS NULL
04/05/20 13:20ID:???参考になるサイトや本はありますか?
テンプレの
http://ime.nu/www.softagency.co.jp/mysql/TIPS/
にちょっと書かれてましたが、もっと詳しいことが知りたいです。
よろしくお願いします。
0249NAME IS NULL
04/05/20 13:47ID:???http://www.google.co.jp/
0250NAME IS NULL
04/05/20 14:49ID:???mysqlで同じテーブルに入っているデータの
2列の値が重複しているデータを検索したいのですが
SQLはどう書けばよいですか?
0251NAME IS NULL
04/05/20 14:56ID:???もうちょっと具体的に。
select * from table where field_1 = field_2;
ってこと?
0252NAME IS NULL
04/05/20 15:08ID:???Cでっていっても、通常はmysqlclientライブラリ使うから
C APIの使い方に帰結するんだけど?どこが判んないの。
http://dev.mysql.com/doc/mysql/ja/Clients.html
他言語でもこのC APIをラップしてるだけ(が多い)だから、
Cだから云々てことは無くて、結局MySQLのAPIが判ってないってことだよ。
http://www.synnottsoftware.com/tutorials/mysql.html
な感じのまんま。本は最低「Core MySQL」ぐらいは
買って読んどいたら良いね。あと「Mastering MySQL」も
mysqlclientライブラリを使わず、つまりSQLクエリ投げるのでなく
MySQLを使いたいってんなら、自分でライブラリやサーバのソース読めない
時点で無謀なことなので、C++の勉強から始めてください。
0253NAME IS NULL
04/05/20 22:32ID:???having
0254NAME IS NULL
04/05/21 11:56ID:???-+--
1 | str1
2 | str2
みたいなテーブルから引っ張って来ることって、SQLで出来ますか?
0255250
04/05/21 15:17ID:???すいません。遅くなりました。
id |カラムA | カラムB
1 |AAA | BBB
2 |BBB | CCC
3 |AAA | BBB
4 |CCC | CCC
5 |BBB | CCC
この場合id1,2,3,5を抽出したいのです。
>>253
私の以前の書き込みが理解しずらかったようですが、
having句で上記内容の解決ができるのでしょうか?
havingをあまり使ったことがないので、ちょっと考えてみます。
0256250
04/05/21 15:31ID:???もう一つ例を書いておきます。
id|カラムA | カラムB
1 |AAA | CCC
2 |AAA | CCC
3 |DDD | BBB
4 |BBB | CCC
5 |EEE | CCC
6 |AAA | CCC
7 |DDD | BBB
この場合1,2,4と3,7です。
0257NAME IS NULL
04/05/21 16:29ID:???0258NAME IS NULL
04/05/21 16:37ID:???0259NAME IS NULL
04/05/21 20:24ID:???質問。1,2,6と3,7ではないの?
カラムAについて重複しているのを引っ張ってきたいのでしょ?
1,2,6はAAAで重複しているし、3,7はDDDについて重複しているからさ。
カラムBについてというなら1,2,4,5,6と3,7だよね?
何で4が1,2,4という組み合わせになるの?
それが出来るかどうかはさておきなんですけど。
0260NAME IS NULL
04/05/22 01:42ID:???データベース論の基本くらい学ぼうよ……
とか思った。
テーブルの構造がおかしいか、
最終的にやりたいことは他の方法で実現できる、
ような気がする。
0261
04/05/22 02:12ID:0L7gep4qeclipseで上記のコードを実行すると、
ClassNotFoundExceptionが表示されてしまいます。
コマンドプロンプトで-classpathを指定すると繋がるのですが・・。
ちなみにOSの環境変数CLASSPATHにはJDBCドライバの
jarファイルのpathを設定しています。
どなたかご教授お願いします。
0262NAME IS NULL
04/05/22 06:05ID:???プロジェクトの「Javaのビルド・パス」にJDBCドライバのjarファイルは入ってる?
0263NAME IS NULL
04/05/22 06:09ID:???プロジェクトの「Javaのビルド・パス」にJDBCドライバは入ってる?
0264NAME IS NULL
04/05/22 06:09ID:???0265NAME IS NULL
04/05/22 08:08ID:yjtXzEiO普段は mysqlcc で GUI で接続してメンテナンスをしているのですが、
時折 Windows 環境からメンテナンス氏なけばならないことがあります。
そんなときは ssh で接続し、コマンドラインで作業をしてます。
Windows から Linux 上の MySQL サーバに接続して
メンテナンスの作業を行うことができるクライアントってありますでしょうか?
0266NAME IS NULL
04/05/22 11:51ID:???0267NAME IS NULL
04/05/22 13:25ID:???mysqlccのWindows版使ったらええやん。
0268NAME IS NULL
04/05/22 14:25ID:???http://pc5.2ch.net/test/read.cgi/db/1079502373/3
俺はNavicat使ってるけど、今がmysqlccならそのWin版使えば?
サーバ管理の作業がメインならMySQL Administrator > MySQL Control Center
0269NAME IS NULL
04/05/22 15:16ID:???0270NAME IS NULL
04/05/22 16:23ID:???サーバー側アプリでの対応は、httpd、PHPやそれ
(phpMyAdmin)を自身をインストールする必要があるからねぇ。
クライアント側がブラウザだけで良いとか、
通常のPort80だけで、穴あけやすいとかの利点もあるけど。
0271265
04/05/22 19:13ID:???>>267 mysqlcc に Windows 版があるのを知りませんでした。
早速試してみます。
>>268 いろいろとあるんですね、ほかのものも試してみたいと思います。
>>269-270 すでに Apache + PHP + MySQL の構成で
Webアプリケーションを運用しているので、
ブラウザ経由でのメンテナンスも試してみます。
0272NAME IS NULL
04/05/22 21:35ID:???Googleで調べてみたところ出来るようなのですが、
うちのMySQL(Ver 12.22 Distrib 4.0.18, for pc-linux-gnu (i686))
では出来ないようです。
何か設定などが必要なのでしょうか?
0273NAME IS NULL
04/05/22 21:52ID:???[TAB]キーで補完されないか?
[↑]/[↓] or [Ctrl]+[P]/[N] でヒストリー
0274NAME IS NULL
04/05/22 22:47ID:???今までテストで適当なデータを入れてたので運用前にそれを一気に削除したいと思います。
しかし、普通にdelete from tableじゃauto_incrementのデータは1に戻らないですよね。
これを1からカウントし直すようにする方法を教えてください。
テーブル自体消してして作り直せってのは無しで。
0275NAME IS NULL
04/05/22 23:38ID:???alter table foo auto_increment=0;
とか
0276NAME IS NULL
04/05/23 03:00ID:???有難うございます。やってみます。
0277NAME IS NULL
04/05/23 09:17ID:nsOfx3se何をやるのかでツールを選んだら?
MySQL5.0で実装されるストアドプロシジャを操作しようとしたら
新しいバージョンのNavicat2004を使うことになる
0278NAME IS NULL
04/05/23 10:40ID:???truncate tableではダメ?
0279NAME IS NULL
04/05/23 14:37ID:???(ttp://dev.mysql.com/doc/mysql/ja/index.html)
テーブルをメモ帳で作成したのですが、
日付に \N と入力すると0000-00-00と認識されます。
メモ帳で日付データにNULLを入力するには
どうすればよいのでしょうか?
環境はWinXPHome + MySQL 4.0.14です。
0280NAME IS NULL
04/05/23 15:13ID:???「テーブルをメモ帳で作成」って何? とか、どんなテーブル定義かとか、SQL文をmysqlコマンドに
与えたのかmysqlimportを使ったのかとか、説明がないのでぜんぜんわからない。
\N じゃなくて '\N' (←引用符つき)にしちゃったから「不正な日付」と判断されたとか?
0281NAME IS NULL
04/05/23 15:45ID:???http://dev.mysql.com/doc/mysql/ja/Loading_tables.html
ここでサンプルとして使われている「ペット」というテーブルです。
mysqlプロンプト上で LOAD DATA しています。
よろしくお願いします。
0282NAME IS NULL
04/05/23 16:15ID:???「メモ帳」って手軽なのは良いんだけど、高級クリップボード
の域を超えてエディタとして使うと難があるから
[TAB]NULL[TAB]とか、[TAB]\N[TAB]とはしないで、
\Nを入れずに[TAB][TAB]にしてみ。
つまりNULLのところに何も入れない
(サンプルに従って[TAB]区切り)
あと、最終行の後端をEOFで終了しないで、[改行]で終わらないと
フィールドデータの終端にならないから気をつけて。
0283282
04/05/23 16:22ID:???0284280
04/05/23 16:59ID:???説明少な杉
まあいいや。
Windowsのメモ帳なんかで作ったファイルをLOAD DATA INFILEを読むときには、
LINES TERMINATED BYを指定する必要がある。
http://dev.mysql.com/doc/mysql/ja/LOAD_DATA.html
あるいは
・行終端記号を変更できるエディタでLFのみに変更
・各行の末尾にダミーのTABを入れておく
0286NAME IS NULL
04/05/23 17:29ID:???うまくいきました。
秀丸で EOF がはいらないようにして、
LF改行で保存する事で認識しました。
0287272
04/05/23 22:26ID:???これができないんですよ。
履歴の方は出せるんですが・・・。
Linuxサーバにsshで繋いでシェル上でmysqlを実行してるのが
問題なんでしょうかね・・・。
0288NAME IS NULL
04/05/23 23:21ID:???いや、それ普通だから。それで補完もできる。
シェル疑うべきなんじゃ?bashとかtcshなら問題ないと思うけど。
0289NAME IS NULL
04/05/23 23:54ID:94cHIjUt補完動作用のライブラリがリンクされてないバイナリなのかも。
たぶんreadline関係のライブラリをリンクしてコンパイルすれば
保管するんじゃないかな。
0290NAME IS NULL
04/05/23 23:55ID:???ODBC使うのとlibmysql.lib使って書くのどっちが高速に動作するかな?
一千万行とかのUPDATE、INSERT、SELECTを一日2〜3回するから
少しでも早い方を使いたいんだけど・・・
0291287
04/05/24 00:28ID:???例えばselectを補完しようとして
mysql> sele[tab]
として補完されないと悩んでました。
mysql> select * from [tab]
などでテーブル名は補完できました。
0292NAME IS NULL
04/05/24 00:37ID:???その書き方だと、1000万行かたまり×数回/日ように読めるんだけど...
ならlibmysqlをカスタムして使うのがストレスがなくて良い。
0293NAME IS NULL
04/05/24 01:12ID:???SQLステートメントの補完も出来たと思ったけど、
MySQL4.0.20付属ので試したら出来なかった。
何かパッチ当てて使ってた気もするな。それでも
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/9043
にも話題が出てるけど、そんな感じの文脈に沿った
ものじゃなくて単語単位だった。
mysqlccのクエリ入力機能にもちょっとマシな
補完機能があるけど、これも構文はみないね。
0294NAME IS NULL
04/05/24 01:14ID:???うちでもselectの補完も出来るよ。
0295NAME IS NULL
04/05/24 01:38ID:???それで合ってます・・・正直設計から見直した方がいいような気もするけど
どうしてもコレで行くって言うからlibmysql使ってやってみるよ。レスthx
0296NAME IS NULL
04/05/26 02:33ID:Hyrm23K1mysqlを動かすクライアントとmysqldを動かすサーバーが別々のマシンで、
BLOB型データをmysqlから書き込んだり、読み出したりすることはできるんでしょうか。
0297NAME IS NULL
04/05/26 06:16ID:???mySQLでDBを作りたいのですが、日本語をinsertしたところ、???と化けてしまいます。
my.iniで[mysqld]欄にsjisの指定は行っています。
環境は以下です。
mysqlバージョン 4.1.1a
コネクタバージョン mysql-connector-java-3.0.12
OS 2k/XP
win2kでコネクタを2.0.14,3.0.14,3.0.11でやってみてもうまくいきませんでした。
mysqlのバージョンを4.0.18で、コネクタを3.0.12でやった時はうまくいったのですが、
空間情報を扱いたいため、pointなどを使ってすでに数値データを入力してしまったので
4.1.1を利用できたらと思います。
コネクタが対応していないんじゃないのか?と思って試してみたのですが、
そうではないのでしょうか?
そろそろ実装しようかなと思ってたところ、
あと20日で論文書けといわれて、テンパってて教えて君になってしまいました。
どうかよろしくお願いします。
0298NAME IS NULL
04/05/26 11:12ID:???なんでそんなチャレンジャーなバージョンを使っているのか分からんが、
Javaでデータを入れることが目的で無いなら、コマンドラインからデータを
挿入してみてはどうか?
MySQLサーバの文字コードとクライアントの文字コード、テーブル、
カラムの文字コードやデータ自身の文字コードがどうなっているかなども
チェックしてみては?
MySQLサーバの文字コードとクライアントの文字コードはDOSプロンプトで
MySQLにログインして\s+RETURNしてみれば分かるでしょう。
0299297
04/05/26 13:31ID:???このバージョンを使う理由ですが、マニュアルの方で
空間情報機能の追加がされていると読んだからです。
ファイルに書き込んでそれを読み込むということも考えたのですが
DB内の日本語のデータをjavaアプレットに表示しようとしたところ、
同様に???になってしまったため、あきらめました。
つまり入力、出力ともに文字化けしてしまいます。
文字コードですが、
クライアント、サーバともにsjis_japanese_ciとなっています。
ほかの文字コードはちょっとわからないのですが、
JAVAからテーブルを作成した場合も、プロンプトから作成した場合も上記の
症状となりました。
JAVAで使用端末のの文字コードの確認をしたところ、MS932となりました。
これはsjisと考えていいのですよね?
WinMySQLで変数を見ていたところ、character_set_Systemがutf8となっています。
これが原因でしょうか?
グーグル先生に聞いてみたところ、
http://www.mysql.gr.jp/mysqlml/mysql/msg/9238
このような記事がでてきたのですが、ここらへんをお勉強したらいいですか?
(書いてあることがまだあまりわからない・・・。my.cnfとか)「
ほんと厨房ですみませんです ´д`
0300NAME IS NULL
04/05/26 13:50ID:???JDBC使ったことないからよくわからないけど、↓のドライバを使ってみたらどうだろう。
http://www.javareading.com/jdbc/
> JAVAからテーブルを作成した場合も、プロンプトから作成した場合も上記の
> 症状となりました。
プロンプトから作成ってのは、コマンドプロンプトからmysql.exeを起動してテーブル作成&
INSERTしても化けるってこと?
> (書いてあることがまだあまりわからない・・・。my.cnfとか)「
my.cnfはMySQLのサーバやクライアントが読み込む設定ファイル。
http://dev.mysql.com/doc/mysql/ja/Option_files.html
0301NAME IS NULL
04/05/26 14:01ID:???おなじくJavaのことは分からんが。
my.cnfはWindowsプラットフォームの場合はmy.iniという名前で、%SystemRoot%に
あるよ。(c:\my.cnfでも良いみたいだけど)
オプションを設定するプログラムまたはグループの名前を[]でくくってオプションを
書いておくと、起動時に読み込まれる。
[mysqld](MySQLデーモン)や[musql](クライアント)、[mysqldump](mysqldump.exe)
のところに
default-character-set=sjis
と書いておけば、とりあえずMySQLに関しては統一が取れるんじゃないか?
0302NAME IS NULL
04/05/26 16:59ID:???4.1はちゃんと試したことがないから、これで解決できるかわからないけど。
mysql-connectorのマニュアルを読んでないのでは?
Properties prop = new Properties();
prop.put("useUnicode", "true");
prop.put("characterEncoding", "Windows-31J");
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/hoge", prop);
0303297
04/05/26 22:33ID:???皆さんから教えていただいたことを参考にいろいろいじってたら
日本語が使えるようになりました。
何をどういじったらできるようになったかわからないのが、あれですが、、、
本当に助かりました。
ありがとうございました。
これからがんばってデータベーサーになろうと思います。
0304NAME IS NULL
04/05/26 22:38ID:???0305NAME IS NULL
04/05/26 23:25ID:???こーほー
0306NAME IS NULL
04/05/27 09:41ID:???0307NAME IS NULL
04/05/27 11:12ID:???空間情報って地理情報のこと?
それならPostgreSQLの安定版にはやくから実装されてるけどね…。
ま、今は論文がんがれ。
0308NAME IS NULL
04/05/27 11:56ID:???REGEXだとマッチしたかどうかしかわからないようなので・・・
よろしくお願いします
0309NAME IS NULL
04/05/27 13:15ID:fghMnpZM0310NAME IS NULL
04/05/27 13:55ID:???レスどうも。LOCATE()は知ってますが、正規表現が使いたいんです。
具体的には住所で港区芝2-1-1とかの文字列から
番地以前までを抜き出す処理です。
[0-9]にマッチした場所の直前の位置を取得したいんですが、
LOCATE()って正規表現は使えませんよね?
PHPとかと連動させてプログラム側で処理するしかないのかな・・・
0311NAME IS NULL
04/05/27 20:27ID:fghMnpZMredhatでmysqld4.0.17を動かして、
sjisのテーブルとujisのテーブルを作ってみました。
sjisのテーブルにはsjis文字をINSERT(本に書いてあったnkfとバッチ処理を組み合わせる方法)して、
ujisのテーブルにはEUC_JPの文字をINSERTしました。
redhatでmysqlを動かすと、ujisのテーブルはSELECTで検索できますが、
sjisのテーブルは文字化けします。
Windows2kにもmysqlをインストールしてWindows2kからredhatに接続してみると、
sjisのテーブルは読めますが、ujisのテーブルは文字化けします。
質問は
(1)これは正しい動作なのでしょうか。
(2)SET CHARACTER SET ujisとかsjisとかやると、文字化けしなくなるような記述が
ドキュメント(4.0.12版)がありますが、
4.0.17ではSET CHARACTER SET ujisもSET NAMES ujis もどちらもエラーがでてしまいました。
4.0.17ではこれらがサポートされていないのでしょうか。
mysql> SET NAMES ujis;
ERROR 1193: Unknown system variable 'NAMES'
mysql> SET CHARACTER SET ujis;
ERROR 1115: Unknown character set: 'ujis'
(4.1.1ではうまくいきました。)
(3)結局4.0.xではsjisのテーブルはsjisが読める端末で読み、
ujisのテーブルはujisが読める端末でしか読めないのでしょうか。
(4.1.1では文字コードを変換してくれるのですが、ちょっと新しすぎて使うのに躊躇してます。)
以上、長々とした質問ですが、よろしくお願いします。
0312NAME IS NULL
04/05/27 23:59ID:???win版でujis<->sjis変換してくれるクライアントをソフトエージェンシーで配布してるはずなので、
それをつかったらどうよ?
0313NAME IS NULL
04/05/28 15:58ID:T60E4ozl2つテーブルがありIDでリレーションされています。
1つのテーブルには日付があり古いレコードを削除したいのですが、
1つのSQL文で同時に2つのテーブルからレコードを削除する方法はありますか?
ウルトラ適当なのすが、ニュアンス的には以下のようなことをしたいのですが。
DELETE TableA,TableB Where TableA.ID=TableB.ID and TableB.Date < xxxxxxxx;
mysql は、 3.23.5x です。
先生、よろしくお願いします。
0314NAME IS NULL
04/05/28 16:55ID:???4.0以降ならそんな感じで複数テーブルからレコードを削除できるけどね。
http://dev.mysql.com/doc/mysql/ja/DELETE.html
3.23ではDELETE文を2回発行するしかないと思う。
0315NAME IS NULL
04/05/29 13:40ID:WqFh/zxU0316NAME IS NULL
04/05/29 15:11ID:???http://dev.mysql.com/doc/mysql/ja/SHOW_PROCESSLIST.html
0317NAME IS NULL
04/05/29 18:34ID:WqFh/zxU有り難うございます。これです。助かりました。
0318313
04/05/29 23:51ID:KU9koslZ先生、レスどうもでした!
では2回発行して対処します。
またよろしくお願いします。
0319NAME IS NULL
04/05/30 09:10ID:iiz+oQIFcreate table averagePriceData (
id MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
itemName VARCHAR(150),
price MEDIUMINT(10) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
amount MEDIUMINT(10) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
venderID VARCHAR(100),
city VARCHAR(50),
venderX VARCHAR(10),
venderY VARCHAR(10),
time TIMESTAMP,
PRIMARY KEY (id)
);
このようなテーブルを作ろうと思って実行したのですが
ERROR 1075: Incorrect table definition; There can only be one auto column and it
must be defined as a key
と言うエラーがでてしまいました。
エラーメッセージ集のようなものも検索したのですが
解決できずです。
自分ではMEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT
の設定がおかしい???などと思ってるのですが他にココは確認したのか
などのご指摘ありましたら是非よろしくお願いします。
0320NAME IS NULL
04/05/30 09:30ID:???まずはマニュアルに当たるのがいいと思う。
http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html
> 注意: AUTO_INCREMENT カラムはテーブルごとに 1 つだけ存在できる。
つか、priceやamountがauto_incrementって…
0321319
04/05/30 09:43ID:???>>つか、priceやamountがauto_incrementって…
レスありがとうございます。
ご指摘のとおりでした。
初テーブル作成だったのでこれから紹介していただいたマニュアルなども
参考にして学んでいきます。
どもでした。
0322NAME IS NULL
04/05/30 15:18ID:qSyajV8O日付のデータを取り出す場合、where句にはどのような条件が適当でしょうか?
ぶっちゃけこのような場合の常套手段をおしえてほしいです。
0323NAME IS NULL
04/05/30 16:33ID:???そんなかんじ
0324NAME IS NULL
04/05/30 16:49ID:MliJef+Eその列の最大値を取りたく、
select max(test_number) from db_name;
※test_numberはint。
としているのですが、どうしても0.4秒ほどかかってしまいます。全行数は数万行ほどです。
最大値を取る方法として、max()しか分からないのですが、他に速い方法はありますでしょうか?
0325322
04/05/30 16:52ID:???調べてみてこんなのでいこうとおもってたんですが
where DATE_FORMAT(hoge_date,\Y-\m-\d) = '2004-4-4';
そっちのほうがカコイイですね
0326322
04/05/30 16:58ID:???%Y-%m-%d
0327NAME IS NULL
04/05/30 17:00ID:???sortしてlimit 1とか。。
どっちが速いかわからんけどw
0328NAME IS NULL
04/05/30 17:04ID:MliJef+E有り難うございます。さっそくやってみました。
0.2秒ほど遅いです(>_<)
0329NAME IS NULL
04/05/30 17:39ID:???取り出すのとどちらがよいでしょうか?
また表示フォーマットなどの問題があるとおもいますが(たとえば
01と表示したいのに1と表示されたり)、その辺はどのように対処するのが
筋でしょうか?
0330NAME IS NULL
04/05/30 18:02ID:MAIGn6Zemax()の引数になるカラムtest_numberにインデックスを設定しろ。
そうすれば幸せになれる。
0331NAME IS NULL
04/05/30 18:42ID:???0.01秒かからん。
0332NAME IS NULL
04/05/31 15:04ID:???日付ならDateで、フォーマットはSimpleDateFormat。
0333NAME IS NULL
04/05/31 16:39ID:TTyLFfSb有り難うございます。インデックス付けたら一瞬でした^^
where句にあるものだけが速くなるんじゃないんですね。
0334NAME IS NULL
04/05/31 19:15ID:???Javaでカレンダーいじるのかったるいし。
0335NAME IS NULL
04/06/01 09:32ID:???SQLのフォーマットの処理を待ってる方がかったるいがな
0336NAME IS NULL
04/06/01 12:34ID:9foHO+qT僕は、
SELECT DATE_FORMAT(DATE1, '%y/%m/%d %H:%i') AS DATE2 FROM xxxxxxxx
って感じに mysqlに処理させてるけど・・java遅いし。
0337NAME IS NULL
04/06/02 18:09ID:???0338NAME IS NULL
04/06/02 19:36ID:???低レベルな質問で申し訳ないですが、インスコしたばかりの状態で匿名ユーザーの削除を
することに挑戦しています。
とりあえずインスコ後、rootで入りrootにパスを設定して、
use mysql;
delete from user where user='';
を打ちこみました。レコード2行消えたというメッセージが帰ってきたので、
select user from user;
と打って、確認したところ、ちゃんと消えていました。そして
flush privileges;
を打って、一旦quit;exit;の後mysqlサーバをシャットダウンしました。
そして、起動させようとしたところ、mysqladminの信号が青にならず赤のままでとまってしまいます。
結局再インスコをしました。何度か同じ事を繰り返してみましたが駄目でした。
どこか間違っている個所があったのならどなたかアドバイスお願いします。
0339NAME IS NULL
04/06/02 20:36ID:???rootにパスワードを設定したのに、mysqladminの
ログインアカウントにつかってるroot(デフォだとね)に
パスワード入れてないんじゃないの?
シングルユーザOS(=Win98)なら、普通にmy.iniの
mysqladminかclientの項に記述を追加しとけばいいよ。
0340338
04/06/02 20:53ID:???ありがとうございます。
確かにmysqladminのmy.ini Setupタブを開くとuserとpasswordが別で設定してあります。
それは関係ないと思ってましたが、関係あるんですね。
とりあえずmy.iniの[WinMySQLAdmin]項目のpasswordを消してやってみます。
0341338
04/06/02 21:24ID:???[WinMySQLAdmin]
Server=D:/MYSQL/bin/mysqld.exe
[mysqld]
basedir=D:/MYSQL
datadir=D:/MYSQL/data
としてからdelete from user where user='';をやってみましたが駄目でした。
Query OKのメッセージは出るので削除には成功してるんですが、その後再起動すると赤信号が変わってくれません。
そのときmysqladminのタブを切り替えてみるとDatabaseのところが全て消えてしまってるんです。My.ini Setup や
topにあるやつ、startのところの表示は変わらずされてます。
匿名ゆーざーを消すと起動ができないってことはないですよね。色んなサイトで匿名ユーザの消し方は解説されてますもんね。
今まで匿名ユーザを消して問題があったような話は他ではなかったんでしょうか。原因がわかりません。
0342NAME IS NULL
04/06/02 22:29ID:???0343338
04/06/02 23:05ID:???レスありがとうございます。匿名ユーザをいじる前段階ですと、シャットダウン→再起動に
関しては何の問題もなくできていますので、匿名ユーザをいじったことによるものだと思います。
これは稀なことなんでしょうか?myadminで青にならないということは、サーバが立ち上げできない
ということですよね。mysqlデータベース内のuserテーブル内のデータは立ち上げにも関わる重要な部分なんですね。
インストールから削除までの流れは解説サイトの教え通りですし、どうすればいいんでしょう
0344NAME IS NULL
04/06/02 23:35ID:???mysql.userテーブルからユーザ名が空のレコードを削除したらmysqldが起動しなくなったって
話は聞いたことがないなあ。
ログファイル(D:\mysql\data\hogehoge.err)には何か記録されてる?
0345NAME IS NULL
04/06/02 23:42ID:???[WinMySQLAdmin]
user=####
password=####
とかは?
あとWinMySQLAdminでmysqldをキックするんじゃなくて、
DOSプロンプトでD:/MYSQL/bin/mysqld.exeを起動した場合は?
0346338
04/06/03 00:27ID:???何度も入れなおしていて中途半端にログがわかりづらいので、今からログファイルも消して
やり直して、ログファイルをそのままあげます。
>>345
それは>>339さんに言われたので一応消してみました。http://www.sound-uz.jp/php/colum/setup13.html
このサイトに書いてあるmy.iniの書き方でやりました。DOSからの起動も今からやってみます。
お付き合い本当にいただきありがとうございます。
0347338
04/06/03 00:42ID:???InnoDB: a new database to be created!
040603 0:31:34 InnoDB: Setting file .\ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
040603 0:31:42 InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
040603 0:31:45 InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
040603 0:31:54 InnoDB: Started
D:/MYSQL/bin/mysqld.exe: ready for connections.
Version: '4.0.18-max-debug' socket: '' port: 3306
040603 0:34:29 D:/MYSQL/bin/mysqld.exe: Normal shutdown
040603 0:34:30 InnoDB: Starting shutdown...
040603 0:34:32 InnoDB: Shutdown completed
040603 0:34:32 D:/MYSQL/bin/mysqld.exe: Shutdown Complete
040603 0:36:55 InnoDB: Started
D:/MYSQL/bin/mysqld.exe: ready for connections.
Version: '4.0.18-max-debug' socket: '' port: 3306
040603 0:39:48 InnoDB: Started
D:\MYSQL\BIN\MYSQLD.EXE: ready for connections.
Version: '4.0.18-max-debug' socket: '' port: 3306
0348338
04/06/03 00:47ID:???それでプロンプトからmysqld.exeだとmysqladminは出てきませんでしたが、ルートで
接続をしてみたら接続できたので、起動に成功したみたいです。
でも、mysqladminからは無理のようです。
起動はできるがmysqladminは機能しないということでしょうか?
0349344
04/06/03 01:04ID:???> D:\mysql\data\hogehoge.errはなかったのですが、上のであっていますよね?
"hogehoge"の部分は実際にはマシン名が入るから、それで合ってる。
> それでプロンプトからmysqld.exeだとmysqladminは出てきませんでしたが、ルートで
> 接続をしてみたら接続できたので、起動に成功したみたいです。
じゃあmysqldの問題じゃなくて、単にWinMySQLAdminがmysqldに接続できないだけだね。
>>339 >>345 の言うように、my.iniの[WinMySQLAdmin]セクションか[client]セクションに
userとpasswordのエントリを追加すればいけると思う。
0350338
04/06/03 01:37ID:???レス遅くなってすみません。ini関係は無知識なので、色々試してなんとかできました。
初め[client]セクションを新たに作りuser,paswordをroot,rootに付けたパスワード
を値としてやってみたら、失敗したのですがmysqladminなしで起動させてみると
名無しで接続ができてしまいました。これは[client]に設定したものがデフォルト値に
なってしまうせいですよね?
その後[WinMySQLAdmin]セクションに設定したところ成功しました![client]に設定した場合と違い
名無しではちゃんと拒否してくれました。その後root,passwordの値を別のものにすると
やはり失敗したのでroot,passwordの値はユーザ設定されているものでそのユーザが持っている権限
をmysqladminで使うということでしょうか?
とにもかくにも本当にありがとうございました!助かりました。これでやっと寝れます。
0351NAME IS NULL
04/06/03 16:36ID:IKUlHP+Z先日、includeファイルの中にMYSQL構造体を見つけたのですが、
その中にあるfree_meとfield_allocと言うメンバーの用途が分からず
色々と調べているのですが、いいサイトや回答が見つかりません。
また、free_meの定義らしき物はlibmysql.dllのソースの中で見つけた
のですが、これ以上独力で調べるのは限界みたいなのでもし知っている
方がいらっしゃったら教えてください。
よろしくお願いします。
0352NAME IS NULL
04/06/03 16:52ID:???サーバを友人と数人で使用しています
MySQLを簡単に使うためphpMyAdminを設置しました、
個別にユーザを登録して各自のIDでパネルにログインして操作はできるのですが
左のフレームのDB選択メニューに他の人が作成したDB名も表示されます
これを本人のものだけにする事は出来ないのでしょうか?
config.inc.phpを眺めてみたのですがわかりませんでした、
もっと沢山の人で共用してたらたくさん出てきて使づらくなりますよね?
みなさんどうしていますか?
0353351
04/06/03 17:30ID:IKUlHP+Zユーザー設定を変更したら見えなくなった覚えがあります。
GRANTだったと思いますが、REVOKEだったかもしれません^^;
権限を変更し、SQLサーバーへの権限はユーザーに持たせず、データベースを管理
者がデータベースを作り、それを適宜ユーザーに渡すと言う作業が必要になると
思いますが、それで他の人のデータベースは見れなくなるので、そちらから調べて
みてはいかがでしょうか?
0354351
04/06/03 17:47ID:???先ほど、昔書いた物を漁ったのですが
SUPER,REPLICATION CLIENT
の権限を変更してみてはいかがでしょうか?
これ以外の権限かもしれませんが、思い当たったので
書きこませて頂きました。
0355NAME IS NULL
04/06/04 23:05ID:???データ型が沢山あってどれが目的にあってるかわかんないです。
データ型を1つ1つ解説しているようなページって無いでしょうか?
基本的な型を説明しているのはあるんですが、単に文字とか数値とかしか書いてなかったり・・・
0356NAME IS NULL
04/06/04 23:11ID:t2geracg管理ソフト(phpMyAdmin的な)はないでしょうか?
一部のDBだけをいじらせたいのです。
0357356
04/06/04 23:14ID:???phpMyAdminでユーザー設定できたんですか。
失礼しました。
0358NAME IS NULL
04/06/04 23:25ID:???データ型はDBMSによっても変わってくるので、マニュアル嫁。
それが理解できないなら一般的なSQLの本買って先に基礎力を養え。
>>356
ユーザ毎にDBの権限を設定すれば普通にそうなるが。
同じMySQLでアプリケーションで更にユーザって
概念を持たせる話なら、鯖屋とかでphpMyAdmin等を
独自にカスタムしてるから、見習って作れば?
ただ、そんなのは鯖屋でも特殊な部類のところだけだけど。
0360NAME IS NULL
04/06/04 23:34ID:???>>357
そこで言ってるのはMySQLのユーザ管理機能がphpMyAdminに
反映されてるだけだが、求めていた事はそれなのか?
MySQLのユーザ管理はあたり前のものだから、
それを前提しないで機能を実現したいと読みとれたのだが。
0361NAME IS NULL
04/06/05 00:16ID:???すぐに理解できなかったのですが試行錯誤で出来ました、
方法はrootでphpMyAdminにログインし特権の変更で
目的のユーザーを修正にすると、最初の画面でグローバル特権にチェックが入っているので
それをすべて消して、その下にあるデーターベース特権のところを適切にチェックする事でできました。
phpMyAdminをいろいろいじってますがかなり便利で感心してます。
0362351
04/06/07 15:06ID:???具体的な方法は覚えていなかったので参考になりました。
こちらはCSEとかねやんMySQLを使用していましたが、
今度phpMyAdminも使用してみますね。
0363NAME IS NULL
04/06/08 06:44ID:Ym43Uh24OS: RedhatLinux 9
Server: apache 1.3
DB: MySQL 4.0
モジュール: PHP
参考にしている書籍は以下のとおりです。
MySQLクックブック :O'REILLY
MySQLディスクトップリファレンス :O'REILLY
MySQL徹底活用: 翔泳社
参考にしているHPは以下のとおりです。
http://dev.mysql.com/doc/mysql/ja/index.html
http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html
その他
説明---------------------------------------------------------------
以下の4つのデータベースがあります。
name1
name2
name3
jyuusyo
name1〜3には
1さんの友人の名前と電話番号,住所番号、
2さんの友人の名前と電話番号,住所番号、
3さんの友人の名前と電話番号,住所番号、
を入れておきます。
jyuusyoには住所番号と郵便番,号住所を
入れておきます。
「DB: name2」から
名前を条件に住所番号と、電話番号を検索します。
検索結果の住所番号を元に「DB: jyuusyo」から住所を検索し、
名前と、電話番号と、住所を表示する方法がないかお教え願いないでしょうか?
HDDの都合上「DB: jyuusyo」をテーブルとして、「DB: name1〜3」のなかに持ちたくありません。
また、データベースを一つ作り、name1〜3,jyuusyoをテーブルとして持ちたくありません。
上記の説明でわかりづらかったらご指摘ください。
説明しなおします。
よろしくお願いします。
0364351
04/06/08 08:48ID:???サブクリエはMySQL4.0では実装していないのですが、363さんの
状況ですと恐らく自分で好きなように弄れる環境ではないみたい
なので管理者か上の人にMySQL4.1以降を入れてもいいかどうか聞
いてみて下さい。
もしダメならかなり遅くなりますが、プログラムを組んでサブク
エリを擬似的に表現するかするしかないかと^^;
(最初の結果をファイルに出力→そのファイルを読み込み再度検索)
思いつくのはこのくらいなのですが、もっといい方法が有るかもし
しれないので頑張って下さいね。
0365NAME IS NULL
04/06/08 09:55ID:???「データベース名.テーブル名」という形式でテーブルを指定すれば、同一データベース内の
テーブルと同じように結合できるよ。
select 名前, 電話番号, 住所 from name2.友人, jyuusyo.住所マスタ
where name2.友人.住所番号 = jyuusyo.住所マスタ.住所番号
and name2.友人.名前 like '名前%';
0366351
04/06/08 12:04ID:???確かに、結合すればできそうですね。
すっかり忘れてました^^;
0367NAME IS NULL
04/06/08 16:43ID:HhI0hefpどのようにするのが一番良いのでしょうか?
mysqldumpが一般的?
0368NAME IS NULL
04/06/08 20:52ID:d/2jJoLc下記のようなエラーが出てしまいうまくコンパイルができません。
sql_lex.cc: In function `void lex_init()':
sql_lex.cc:85: `symbols' undeclared (first use this function)
sql_lex.cc:85: (Each undeclared identifier is reported only once for each
function it appears in.)
sql_lex.cc:87: `sql_functions' undeclared (first use this function)
sql_lex.cc: In function `int find_keyword(LEX*, unsigned int, bool)':
sql_lex.cc:168: `get_hash_symbol' undeclared (first use this function)
make[2]: *** [sql_lex.o] Error 1
make[2]: Leaving directory `/opt/local/mysql-3.23.58/sql'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/local/mysql-3.23.58/sql'
make: *** [all] Error 2
環境はsoralis8(sparc)でmysql-3.23.58を使おうと思っています。
configureでオプションは何も指定していません。
何か原因がわかる人いましたら教えてください。
よろしくお願いします。
0369NAME IS NULL
04/06/09 00:12ID:???0370363
04/06/09 01:23ID:EWseIkt8ありがとうございます。
DB同士でも結合できるとは頭の片隅にもありませんでした。
0371NAME IS NULL
04/06/09 02:05ID:???でいいんじゃないすか。
selectのあとに、DB名指定でTABLE書けない?
0372NAME IS NULL
04/06/09 08:54ID:???show variables; で、character-setsの項を見ると、
latin1 dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia
hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
と表示されるのですが、ujis(EUC-JP)が見当たりません。
my.cnfで[mysqld][mysql][mysqldump]に
default-character-set-name=でEUC-JPをセットするにはなんと書けば良いのでしょうか?
0373NAME IS NULL
04/06/09 11:13ID:???そのMySQLビルドしたの誰よ?どうも韓国人くさいんだが(笑
わざと日本語外してるとしか思えん。
--with-extra-charsets=complexとかall、まあ要るもんだけ列挙しても良いんだが
とにかくオプション変更して要リビルド。my.cnfで変更できるのは
configureオプションで言うと--with-charsetオプションの方。
0374373
04/06/09 11:28ID:???どのみちマルチバイト言語の場合はビルド時に組み込んどくしかないので、
EUC-JPをセットするならリビルドしかないよ。
0375372
04/06/09 11:35ID:???>そのMySQLビルドしたの誰よ?どうも韓国人くさいんだが(笑
自分です。_| ̄|○
MySQL 4.0.18で、以下のようにconfigureしてました。
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data
--with-extra-charsets=complex or all でやってみます。
ありがとうございました。
0376NAME IS NULL
04/06/09 12:46ID:???そして色々設定をし、rootのパスワードも0123と設定しました。
んで、一応OSもリブートしてから、試しにMySQLにログインしてみようとDOSで
c:\mysql> mysql -u root -p
Enter password:0123
と打ってみても
ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)
とエラーが出てしまいます。
色々ぐぐってみたりして、調べてはいるんですが解決しません。。
これはパスワードを間違えてるのでしょうか?それとも他に何か要因がありそうですか?
0123なので間違ったとは思えないんですが...
0377376
04/06/09 12:49ID:???じゃなくて
windowsXPにMySQLをインストールしてみました。
でした。
0378NAME IS NULL
04/06/09 12:55ID:???そのrootのパスワードはどうやって設定したの?
0379376
04/06/09 13:02ID:???ttp://tsuttayo.sytes.net/mysql/install/win/
の1番最後に記載されている方法で設定してみました。
DOSプロンプトで
set PASS=0123
echo GRANT ALL ON *.* TO root@localhost IDENTIFIED BY '%PASS%' | mysql -uroot
echo GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '%PASS%' | mysql -uroot -p%PASS%
としました。
0380NAME IS NULL
04/06/09 13:11ID:???先ずはパスワードがきちんと設定されているか確認しましょう。
> mysql -u root
で、
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
って返ってきますか?
返ってこないでそのままログインできる場合は、パスワードのセットに失敗しているのでしょう。
0381376
04/06/09 13:17ID:???ありがとうございます。
試してみたところ
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
と返ってきました。
0382NAME IS NULL
04/06/09 13:21ID:???ではpassword入力時に '0123' とシングルコーテーションを付けてみては?
それでだめなら私のレベルでは分かりません。ごめんなさい。
0383376
04/06/09 13:23ID:???パスワードにシングルクォーテーションを付加してやってみましたが
やっぱり同じエラーが出てしまいます。
現状ではパスワードは設定されているが、0123ではないパスワードに
なってるって事なんでしょうか...
MySQLって奥が深いですね。
0384NAME IS NULL
04/06/09 13:57ID:???パスワードにゴミが入ったのかもね。
とりあえずmysqldを--skip-grant-tablesオプション付きで再起動してみてmysql.userテーブル
を確認してみたら?
0386384
04/06/09 14:14ID:???1. 「管理ツール」-「サービス」でサービス"MySql"を停止
2. コマンドプロンプトから"mysqld-nt.exe --skip-grant-tables"
3. 別のコマンドプロンプトを立ち上げて"mysql -uroot mysql"
4. mysql> select * from user;
とか。
0387376
04/06/09 14:21ID:???ありがとうございます。
1〜4まで実行してみました。
でSelectの結果?がダーっと出てきました。
ただ見る限り、RootのPasswprdのフィールドには
なにやら暗号化された文字列が入っています。
0388376
04/06/09 14:23ID:???mysql> SET PASSWORD FOR root=PASSWORD('new_password');
を実行しちゃえばいいのかなぁ...
0389384
04/06/09 14:32ID:???いいんじゃないの?
あとは"mysqladmin -uroot shutdown"でmysqld-nt.exeを落としてからサービスMySqlを開始
すれば新しいパスワードが有効になると思う。
0390376
04/06/09 14:39ID:???ERROR 1132:
You must have privileges to update tables in the mysql database to be able to change password for others.
ってエラー出ました...
更新する権限ないですよ、って言われてるっぽいです。
MySQLの道は険しいですね...
0391384
04/06/09 14:43ID:???じゃ
update user set Password = password('new_password') where Host = 'localhost' and User ='root';
ならどうよ?
> MySQLの道は険しいですね...
いや…そーゆー険しさを経験する人は少なそうな気がする。
0392376
04/06/09 14:47ID:???mysqld-nt.exe --skip-grant-tables
だとDOSプロンプトが固まってしまうんですが
これはこれでOKなんでしょうか?
また
mysqld -u root --skip-grant-tables
なのかな?とも思いやってみましたが
Can't start server:Bind on TCP/IP port:No error
040609 14:42:39 Do you already have another mysqld server running on port: 3306 ?
040609 14:42:39 Aborting
040609 14:42:39 mysqld: Shutdown Complete
って出ますけどこれはどうなんでしょう...気にしなくて良いんですかね..
0393376
04/06/09 14:50ID:???0394376
04/06/09 14:54ID:???Query OK, 1 row affected (0.06sec)
Rows matched:1 Charged:1 Warnings:0
と出ました!
なんだか更新はできたっぽい?ようでうs
0395384
04/06/09 14:58ID:???お疲れさま。あとは>>389で。
>>392
> mysqld-nt.exe --skip-grant-tables
> だとDOSプロンプトが固まってしまうんですが
> これはこれでOKなんでしょうか?
それでOK。
フォアグラウンドで動作させるので、起動したまま(プロンプトに戻らない)で正しい。
mysqladmin -uroot shutdownとかでmysqld-nt.exeを終了させれば戻ってくる。
> Can't start server:Bind on TCP/IP port:No error
> 040609 14:42:39 Do you already have another mysqld server running on port: 3306 ?
そりゃmysqldを二重起動してる。
>>386の2.を実行している時にでるなら問題ないというか、出て当然。
0396NAME IS NULL
04/06/09 15:00ID:???> ちなみに >>386 の2.なんですが
>
> mysqld-nt.exe --skip-grant-tables
> だとDOSプロンプトが固まってしまうんですが
> これはこれでOKなんでしょうか?
>
良いはずです。UNIXのshellでいう &(バックグラウンドで実行)
が無い状態と思えばよいかと。
これに相当するのは start コマンドで別ウインドウで実行かな。
0397NAME IS NULL
04/06/09 15:12ID:???>echo GRANT ALL ON *.* TO root@localhost IDENTIFIED BY '%PASS%' | mysql -uroot
>echo GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '%PASS%' | mysql -uroot -p%PASS%
まんま打ってみて、別ユーザでユーザ管理テーブル(mysql.user)確認してみたけど、
普通にmysqlの対話プロンプトで'0123'をセットしたパスワードとハッシュに違いが無かったから、
自分の環境だと上手くいってるみたいだけど?
GRANTだからFLUSH PRIVILEGESも要らんはずだし、なんやろね。
0398376
04/06/09 15:14ID:???無事になんとかパスワードも変更でき、ログインすることができるようになりました!
そしてphpMyAdminもちゃんと起動できるようになり一安心です。
いやーしかしこれほど手ごわいとは思いませんでした、MySQL。
名前で舐めていました。
とりあえずは今からphpMyAdminから色々触ってみようと思います。
ありがとうございました。
0399NAME IS NULL
04/06/09 15:17ID:???0401NAME IS NULL
04/06/09 15:24ID:???0402NAME IS NULL
04/06/09 15:26ID:???0403376
04/06/09 15:32ID:???全角もないっすよ〜むしろ全角の方が確立低いっす!
>>402
おっと、逆変換みたいなこともできるんですか?
あの〜ちなみに...この流れでもう1つ聞いていいでしょうか?
phpMyAdminでDBとかTableとか作ろうとすると
tbl_create.php: Missing db
tbl_create.php: Missing table
とかって出てサッパリ先に進めないんですが、これはやっぱ
何か設定が悪いんでしょうか?
phpのconfigの設定はOKだと思うんですけどねえ...
0404367
04/06/09 15:38ID:mE99kQGoinsert into table select * DB.table
の方法でいけました。
サブクエリっぽいのにいけるんですね。
ありがとうございました。
0405NAME IS NULL
04/06/09 15:44ID:???逆変換はできないが、
mysql> select password('0123');
+------------------+
| password('0123') |
+------------------+
| 19837ed42698de7e |
+------------------+
1 row in set (0.02 sec)
mysql> select password('O123');
+------------------+
| password('O123') |
+------------------+
| 5df084331cca3667 |
+------------------+
1 row in set (0.00 sec)
ってやれば確認できたね。
0406NAME IS NULL
04/06/10 04:50ID:???http://dev.mysql.com/doc/mysql/ja/Password_hashing.html
0407NAME IS NULL
04/06/10 06:28ID:???alter table diary add number int unsigned zerofill not null default '1' primary key auto_increment first;
上記文でカラムを追加したんですが
+-------+---------------------+----+----+---------+--------------+
| Field | Type | Null | Key| Default | Extra |
+-------+---------------------+----+----+---------+--------------+
| number | int(10) unsigned zerofill | | PRI | NULL | auto_increment |
なぜかDefaultがNULLになってしまいます。
データを入れると0000000001からちゃんとナンバーが入っているので動作は問題ないのですが
このDefaultは正常なのでしょうか? なんか気持ち悪いです・・・
Ver 4.0.18-max-debug
0408NAME IS NULL
04/06/10 07:32ID:???auto_incrementなカラムにdefault値を設定しても意味ないんじゃ?
0409NAME IS NULL
04/06/10 08:04ID:???>>408の言うとおり、auto_incrementをつけたカラムにはdefaultは指定できない。
auto_incrementの初期値を設定したいなら、create tableのテーブルオプションで指定する。
http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html
0410NAME IS NULL
04/06/10 09:53ID:???>default '1'
intだからクウォートいらないんじゃない?
0411NAME IS NULL
04/06/10 11:26ID:???ALTER TABLEだから俺も要らんと思うし、そういうとこには付けてないけど、
「intだからクウォートいらない」かというと付けた方が良い場合もある。
http://dev.mysql.com/doc/mysql/ja/General_security.html
# 傍目には「SQL判ってねぇな」と思われることもあるので注意。
0412NAME IS NULL
04/06/10 11:59ID:???俺はintでもつけるぞ
0413NAME IS NULL
04/06/10 12:06ID:???他人からどう見られようと、肝心のデータベースに問題がなければよいのだけど、ちと辛亥革命。
0414NAME IS NULL
04/06/10 12:40ID:???これは酷いと思った。
0415NAME IS NULL
04/06/10 13:10ID:???以前、intに'1'とかつけたらエラーぶっこいたことがあって
あれはもしかしたら夢だったのかもしれないけど
それ以来数字は囲まないようにしてる
0416NAME IS NULL
04/06/10 14:06ID:W0rXvnK+SSLで接続してるかどうか知る方法ってあるんでしょうか。
SSLの設定して--sslで接続したんですが、ほんとにSSLでつながってるか
どうかわからないので。
0417NAME IS NULL
04/06/10 14:20ID:???mysql で接続しているなら、プロンプトで \s と打てば接続状態などがわかる。
0418NAME IS NULL
04/06/10 15:54ID:W0rXvnK+どうもありがとうございます。
4.1.1を使っているのですが、--sslをつけてもつけなくても
statusでは
SSL : Cipher in use is EDH-RSA-DES-CBC3-SHA
などと出ます。
/etc/my.cnfの[client]からssl-関連をコメントアウトすると、
statusは
SSL: Not in use
になります。
つまり、--sslが効いているように見えないのです。
どういうことなんでしょうね。
0419NAME IS NULL
04/06/10 17:48ID:???もっと単純に「Port3306をキャプチャリング汁」簡単確実。
#いや。MySQLでちゃんとチェックする方法もあるとは思うよ。
0420NAME IS NULL
04/06/10 18:37ID:W0rXvnK+tcpdumpとgdd、どっちも使ってみましたが、
--sslのありなしに関わらず、どっちもバイナリのような感じでした。
mysqlとmysqld間の独自プロトコルなのかSSLなのか区別できないです。
ネットワークに詳しくないので困りました。
0421NAME IS NULL
04/06/11 15:05ID:nZaKDPd6操作にはGUIのMySQL-Front2.5を使ってます。
GRANT Select, Insert, Update, Delete, Index, Alter, Create, Drop, References ON TEST_DB.* TO 'test'@'%'
とやっても、この「testさん」は、新たなDBを作成出来てしまいます。。。
指定したDBだけ使用許可を与えて、DB作成&削除を禁ずるには
どうやってGRANTすれば良いのでしょうか?オナガイシマスm(_ _)m
0422NAME IS NULL
04/06/11 16:04ID:???手元のXP Pro + MySQL 3.23.58ではちゃんとデータベース作成を禁止できるよ。
デフォルトでは任意のユーザが"test_"で始まるデータベースを自由に作成できるように
なってるんで、それのせいで作成を禁止できないように見えてるだけじゃない?
delete from mysql.db where User = '';
flush privileges;
とかしてからもう一度試してみて。
あと、Windows環境ではファイル名の大小文字を同一視する関係でアクセスできない
場合があるので、データベース名は小文字にしておいた方がいいと思う。
>>421の例だと、実際に作成されるデータベースは"test_db"なのにmysql.dbには"TEST_DB"
で記録されるので、照合に失敗してアクセス拒否される可能性がある。
0423421
04/06/11 16:40ID:???出来ました。ありがとうございます!
「abcdef」など適当な名前にしたら作成出来ませんでした!
確かに、テストしていたDB名が「test」から始まるものだけでした。
mysql.db を見て、Dbフィールドが「test%」のレコードを削除したら
「test」から始まるDB作成もきちんと出来なくなりました。
あと、大小文字の件、ありがとうございます。
以前、動作せず悩みまくったあげくに偶然治った事象があって、
そのまま忘れていたのですが、今調べて見たらこの大小文字の
現象でした。(PHP文内のDB名を大文字に変えたら再現しました)
大変勉強になりました。ありがとうございます!
0424NAME IS NULL
04/06/11 16:53ID:???まずは、
mysql> SELECT User, Host, Create_priv from mysql.user where User='test';
した結果を晒してみそ。
あとGRANTは権限を「追加する」んであって、権限をそれに設定するわけじゃないよ。
つまり今YNNYNとかなってる権限に_Y_Y_("_"はGRANTで指定しなかったpriv)とGRANTで指定すると
権限はYYNYNと積算された値。指定しなかった権限を無くしたいのならREVOKEで意識的に剥奪する。
GRANTはYか_は指定できるがNは出来ない。REVOKEはその逆と覚えておく。
0425NAME IS NULL
04/06/11 16:55ID:???MySQLを使用する際に、制限容量に近づいてきたら
過去のデータを削除する等を、スクリプトで行いたいのですが、
自分の使用しているデータベースの容量もしくは
特定のテーブルのデータサイズを取得するにはどの様な方法が
ありますでしょうか?
0426NAME IS NULL
04/06/11 17:08ID:???Windowsの場合はPerlを入れてない場合が多いから、いつでも使えるってワケではないけど
$ mysqlaccess localhost test '*' -U root -P rootpass
って感じで確認ユーティリティを使うと権限の状態が一挙に調べられるよ。
そうでないとmysql.user/db/hostと権限を積算していかないと駄目だから面倒。
0427NAME IS NULL
04/06/11 18:26ID:???show table status;
0428421
04/06/11 21:01ID:???> GRANTはYか_は指定できるがNは出来ない。REVOKEはその逆と覚えておく。
非常に覚え易いアドバイス感謝します!おかげでGRANTの理解が深まりました。
>426
はい。Perlは入ってないのですが、mysqlaccess でググったら分かりました。
そうですね。権限を一目で確認できるユーティリティはいいですね。
PHPでは無さそうなので、ちょっとPerlでも入れることも検討してみます!
0429NAME IS NULL
04/06/13 03:36ID:???今触ってみたらかなり良さげ。値段もまあまあだし、買っちゃおうかな。
0430NAME IS NULL
04/06/13 07:12ID:ctnw6o5Eトライアル版もあるので、十分試用してから買ってけろ。
Windows版、Mac版の他にLinux版も出ますた。
0431NAME IS NULL
04/06/14 22:05ID:iQeeg+UCMySQLにて文字列を大文字・小文字区別なしに検索したい場合は
どのようにすればよいのでしょうか?
例 チャンネル って言う文字をヒットさせたい場合
検索文字はチヤンネルでもチャンネルでもいけるような。。
0432NAME IS NULL
04/06/14 23:48ID:???正規表現使って、自分でそうしないことには駄目なんじゃないかな。
MySQL は、英数字の大文字小文字は知っていても、日本語の大文字小文字は知らないでしょ。
っていうか、無学な私のために、そんなこと出来るデータベースがあったら、紹介してください。
0433NAME IS NULL
04/06/15 00:13ID:???よろしければお力添えお願いします。
mysql-4.1.2-alpha-winを自鯖にて使用しています。
create table tyouka (
id MEDIUMINT(8) UNSIGNED DEFAULT '0' NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
place VARCHAR(50) UNSIGNED DEFAULT '0' NOT NULL,
amount MEDIUMINT(10) UNSIGNED DEFAULT '0' NOT NULL,
time TIMESTAMP,
PRIMARY KEY (id)
);
のようなDBを作り、釣りの釣果データを入れていきたいのですが
insert時に既にnameとplaceが重複しているレコードがあればそれを更新という形にしたいのです。
id name place amount time
1 メバル 東京湾 5 20040614
というレコードが既にあるときに
メバル 東京湾 10 20040614
のようなデータを新たにinsertしようとすると、id=1を更新のようにしたいのです。
sqlpowerpageのfaqリストの重複についてのとろこを参考にしようとしたのですが
一意の重複(ってのかな・・?)については書かれてあったのですが
なかなか参考にできませんでした。
色々検索しているうちにdistinctを使えばできそうだと思ったのですが
まだどういうように構文を書けばよいのかがかわりません。
どうかよろしくお願いします。
0434NAME IS NULL
04/06/15 01:29ID:???MSのやつは同一視したような記憶がある。記憶違いかもしれないけど。
0435NAME IS NULL
04/06/15 01:31ID:???VARCHARなのにUNSIGNEDなのは気持ち悪いな。。
それはそれとして、
unique (name, place)とかしてみては?
で、MySQLならreplace intoかな。
0436NAME IS NULL
04/06/15 04:51ID:???俺もそんな記憶がある。アルファベットとカタカナの場合。
それとカタカナをひらがなとは同一視はしない。
もしかしてそっちも設定があったりして
0437433
04/06/15 09:34ID:???早速調べてみます。
0438NAME IS NULL
04/06/15 11:13ID:afn3UwUY0.5秒以上かかっているようなものも調べて最適化を計っていこうと思っているのですが。
0439NAME IS NULL
04/06/15 11:45ID:???0440NAME IS NULL
04/06/15 20:32ID:???MSSQL2000なら、インストール時にいろいろと設定できたはず。
0441NAME IS NULL
04/06/15 21:37ID:???サイトで検索しても分からないことがあるので、
もしよかったら教えてください。
今使ってるDBでは、レコード挿入はまずStoredProcedureで
行って、挿入したレコードの自動インクリメントされるID
(primarykeyに指定したフィールド)の値がすぐ分かるんですが、
MySQLでは、この挿入したレコードのIDはどのようにして
取得するんでしょうか?
質問の説明の仕方がまずくてすみません。
0442NAME IS NULL
04/06/15 22:09ID:???0443NAME IS NULL
04/06/15 22:52ID:???http://dev.mysql.com/doc/mysql/ja/mysql_insert_id.html
0444NAME IS NULL
04/06/15 23:33ID:???ああ、ありがとうございます。まだ、関数までは見てなくて助かりました。
mysql_insert_id()の説明で、「前回実行されたクエリで生成した
AUTO_INCREMENT カラムの ID を返します。」とありますから、
これで自分が発行したクエリからのIDが得られるんですよね。
ちょっと詳しく見ています。
0445NAME IS NULL
04/06/16 00:46ID:DkMfux1Jwindows2000にmysqlを入れてます。
文字コードは
Client characterset: ujis
Server characterset: ujis
となっています。
コマンドプロンプトからMYSQLに繋ぐと文字化けてしまいます。
どのようにすれば良いのでしょう?ヒントでもいいので教えてください。
よろしくお願いします。
0446NAME IS NULL
04/06/16 00:55ID:???http://www.softagency.co.jp/mysql/pro/win_winclients.html
0448441
04/06/16 04:08ID:???APIを直接操作するのはSQLを使うようにはいかない
みたいですね。
で、反則技で、一意のデータを挿入時に含めて、
それを検索してIDを取得しようかな などと考えてます。
0449441
04/06/16 04:32ID:???これで安心して寝れそうです。
ttp://dev.mysql.com/doc/mysql/ja/Getting_unique_ID.html
というのも、MySQL._insert_id()関数の意味を誤解していたみたいです。
「最後に生成された ID は、接続ごとにサーバに保持されます。
他の接続を使用するクライアントによって変更されることはありません。」
という文章で納得いきました。
0450NAME IS NULL
04/06/16 19:08ID:P8LtXr5Eインデックスを使用してはいるのですがあまり速くなりません。
0451NAME IS NULL
04/06/16 19:14ID:???50個→2,3個に減らす
最低でも20倍近く速くなる
0452NAME IS NULL
04/06/16 19:25ID:P8LtXr5E2,3個に減らすと50÷2 で25回繰り返すことになります。
一応試したのですが、totalでさらに遅くなりました。
0453NAME IS NULL
04/06/16 19:39ID:???where句で結合するのは?
もちろんそのテーブルにもインデックスを付けて。
0454NAME IS NULL
04/06/16 23:56ID:???0455NAME IS NULL
04/06/17 00:53ID:???MySQLでありうるのか?
index入ってれば0.00秒以外帰ってこないぞ。
なんか間違ってるとしか思えない。
0456NAME IS NULL
04/06/17 02:11ID:???「モデリングで間違ってる」
0457NAME IS NULL
04/06/17 02:50ID:???禿しく同意
0458NAME IS NULL
04/06/17 02:55ID:???MySQL サービスを開始したいのですが、
サービス開始直後(1〜3秒後)に落ちてしまいます。
エラーメッセージも表示されないため対処方法がわかりません。
【環境】
Windows2000 SP4
mysqld-nt Ver 4.0.20a-nt for NT on i32 (Source distribution)
【試したこと】
my.* を検索して全て削除。
その後、再インストールを行い、
libmysql.dll を c:/winnt/system32 にコピー。
winmysqladmin.exe から、 my.ini を編集。
[mysqld]
basedir=F:/usr/bin/mysql
datadir=F:/usr/bin/mysql
[WinMySQLAdmin]
Server=F:/usr/bin/mysql/bin/mysqld-nt.exe
下記コマンド実行
InstallDir/bin/mysqld-nt --install MySQL
・・・OK
net start MySQL
MySQL サービスを開始します.
MySQL サービスは正常に開始されました。
・・・その後、サービス停止。
以上
よろしくお願いします。
0459458
04/06/17 03:01ID:???datadir=F:/usr/bin/mysql
を
datadir=F:/usr/bin/mysql/data
になおしたら動いたわ。
ほんにすんません。
0460NAME IS NULL
04/06/17 09:09ID:???ちょっとよくわからないんだけど
「モデリング」っていうのを
具体的に表現してくれないか?
0462NAME IS NULL
04/06/17 10:45ID:6MhcFhtL回答有り難うございます。
explainの結果は"possible_keys"にインデックス名が出ていますのでインデックス
が使用されている。と思っていたのですがkeyがNULLになっていました。
単純にwhereではinだけにしてそのフィールドだけのインデックスを作って
みたのですがこのような状況です。
0463NAME IS NULL
04/06/17 10:54ID:6MhcFhtLスピードを見たいだけだったので、select * と楽してたのが原因でした。
フィールドを1つだけにしてしたら0.06secになりました。
失礼しました(>_<)
0464NAME IS NULL
04/06/17 20:14ID:???DB設計
0466NAME IS NULL
04/06/21 01:24ID:caWWI/cC1dbあたりの限界テーブル数ってありますか?
この数を越えると重くなってくるみたいな。
0467NAME IS NULL
04/06/21 22:10ID:gc1CC/Wnみたいな状態で年、月、日だけでselectしたいのですがどうすればいいでしょうか?
0468NAME IS NULL
04/06/22 01:01ID:???自分で簡単なスクリプトでも作って、ベンチマークしてみる。
それが一番確実。
ソフト的な制限よりも、ハード的な制限のほうが多いから。
0469NAME IS NULL
04/06/22 01:03ID:???http://dev.mysql.com/doc/mysql/ja/Date_and_time_functions.html
から、使えそうな関数を探し出すとよろし。
0470NAME IS NULL
04/06/22 14:14ID:???テーブルのロックで
LOCK TABLES テーブルA WRITE
を発行した場合テーブルAのみにロックがかかりますよね?
このテーブルAロック中に同じマシンからテーブルBへの
SELECT文を発行するとロック待ち状態のようになるのですが。
ロックの仕方が間違っているのでしょうか?
0471NAME IS NULL
04/06/22 14:15ID:???同じマシンでもコネクションが違えば別
0472NAME IS NULL
04/06/23 04:37ID:???MyODBC使えば実装されてるよね?WHERE句だけが変化するステートメントを大量に発行する場合は
MySQL C APIで繋ぐよりODBC使った方が高速?
それとも結局ODBCドライバの実装ではプリペアドステートメント使われずにクエリ発行されてるのかな?
教えてエロイ人
0473NAME IS NULL
04/06/23 18:05ID:???MySQL4.0.xにはPreparedはない。4.1.x系からある。
ODBCは4.1に対応しているものはまだなかったはず。
ところでCのAPIについてだけど、そんなに速くなかったはず。
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
なんか見ればわかるけど、intであっても一旦文字列に変換する。
そのオーバーヘッドが馬鹿にならない場合もある。
現在のODBCも同様。
これがJDBCならバイナリでやりとりしているから速い。
0475NAME IS NULL
04/06/23 19:57ID:???一番速いのは直接叩くことだが、まあこれは例外かな。
0476NAME IS NULL
04/06/23 22:22ID:???そうそう。ディスプレイをがんがんとね。
0477NAME IS NULL
04/06/24 08:02ID:???0478NAME IS NULL
04/06/24 22:27ID:???0479NAME IS NULL
04/06/24 23:07ID:???0480NAME IS NULL
04/06/24 23:58ID:???0481NAME IS NULL
04/06/25 01:13ID:???0482NAME IS NULL
04/06/25 01:37ID:???0483NAME IS NULL
04/06/25 01:49ID:???EUC-JP、SJIS、LatinでBASE64等、Binary
0484NAME IS NULL
04/06/25 12:39ID:eiZA0FuBかかってしまいます。
自作のインデックステーブルのロジックを考えて複数のテーブルを利用して
このmediumtextを分割してスピードを早くさせたいのですが、どのような
ロジックにして良いかが難しいです。
なにか参考になるページ、本などないでしょうか?
0485NAME IS NULL
04/06/25 13:03ID:foI4VTl/0486NAME IS NULL
04/06/25 14:16ID:???0487NAME IS NULL
04/06/25 17:18ID:???tr('hogehoge', 'oe', 'ia') => 'higahiga' ってな感じの。
0488NAME IS NULL
04/06/25 17:28ID:akYlt9mw0489NAME IS NULL
04/06/25 22:40ID:???replace('hogehoge', 'oe', 'ia') => 'higahiga' にはならんでしょ。
0490NAME IS NULL
04/06/26 01:08ID:???0491NAME IS NULL
04/06/26 02:28ID:???自分で作れ。
http://dev.mysql.com/doc/mysql/ja/Adding_functions.html
0492NAME IS NULL
04/06/26 12:02ID:???0493NAME IS NULL
04/06/26 14:59ID:???答え既にでてる
0494NAME IS NULL
04/06/26 16:25ID:???0495NAME IS NULL
04/06/26 16:42ID:???日付指定でレコードを取り出すにはどうしたらいいんでしょうか?
datetime型(2004-3-12 15:03:22とか)
で保存されているレコードがあって、
2004/3/1〜2004/5/1間での
レコードを取り出したいんです。
よろしくお願いします。
0496NAME IS NULL
04/06/26 22:54ID:???where datetime >= '20040301' and datetime < '20040502'
6.3.1.2 比較演算子
http://dev.mysql.com/doc/mysql/ja/Comparison_Operators.html
引数のどちらかが TIMESTAMP または DATETIME 型のカラムで、
もう一方が定数の場合、定数は比較の実行前にタイムスタンプに変換される。
これは ODBC との互換性を確保するために行われる。
6.2.2.2 DATETIME、DATE、TIMESTAMP 型
http://dev.mysql.com/doc/mysql/ja/DATETIME.html
DATE 型の値を DATETIME または TIMESTAMP 型のオブジェクトに割り当てた場合、
値に時刻情報が含まれていないため、結果の値の時刻部分は '00:00:00' に設定される。
0497NAME IS NULL
04/06/26 22:56ID:???1行目にツッコミを入れるべきだったのに。
なんていう不覚だ。俺としたことが。
0498NAME IS NULL
04/06/27 00:03ID:rsNkX4qPORDER BY ASCで並び替えると
aaa10
aaa11
aaa12
aaa2
aaa3
aaa4
になってしまうんですが、これを
aaa2
aaa3
aaa4
aaa10
aaa11
aaa12
にしたいのですが、SQLだけで並び替えは可能ですか?
0499NAME IS NULL
04/06/27 01:39ID:???0500NAME IS NULL
04/06/27 09:13ID:???0501498
04/06/27 17:12ID:rsNkX4qPありがとうございます。
「お勧めはしない」ということであれば、結構なコストがかかるということですね。
>500
ありがとうございます。
新規に何かしらソート用のレコードを追加する必要があるんですね。
DBから読み出してさらにスクリプトでソートして・・・って
効率悪いような気がしていたんですが、いままでどおり
読み出したスクリプト側で対処したいと思います。
0502NAME IS NULL
04/06/27 18:16ID:???データ自体を弄る方向にはならないのか?
0503NAME IS NULL
04/06/28 05:31ID:???mysql-4.1.2をwindows2000で自鯖にて使い始めたものなのですが
localhost以外のホスト(ネット回線越しに)からの接続ができずに困っています。
データベースはtestを使っていて権限は以下のようなものになっております。
mysql> select * from db;
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Create_tmp_table_priv | Lock_tables_priv |
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+
| % | test | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y |
| % | test\_% | | Y | Y | Y | Y | Y | Y | N | Y | Y | Y | Y | Y |
+------+---------+------+-------------+-------------+-------------+-------------+-------------+-----------+------------+-----------------+------------+------------+-----------------------+------------------+
testデータベースならホスト、ユーザー関係なくアクセスできると言うことだと思っているのですが・・
localhostからなら問題なく接続できます。
接続にはperlのcgiを書いて、DBIを使っています。
ポートはデフォルトの3306でルーターのポートも空けています。
今までもHTTP鯖やFTP鯖などいろんなポートを空けてきたのでルーターの設定ミス
と言うこともないような気がします。
実際のperlでの使い方は
use dbi;
$sql{'user'} = 'root';
$sql{'passwd'} = '';
$sql{'host'} = 'プロバホスト名、ip直打ち、DNS名などいろいろやりました。';
$sql{'database'} = 'test';
$sql{'driver'} = 'mysql';
$sql{'table'} = 'testTable';
$db = DBI->connect("DBI:$sql{'driver'}:$sql{'database'}:$sql{'host'}", $sql{'user'}, $sql{'passwd'});
#データ抽出構文
print"SQLresalt:$resaltprice\n";
$db->disconnect;
という感じです。
エラーメッセージは
DBI connect('test:「$sql{'host'}の値」:3306','root',...) failed: Host 'ホスト名' is not allowed to connect to this MySQL server at mana
gement.cgi line 312
Can't call method "selectrow_array" on an undefined value at management.cgi line
313.
何かお気づきの点ありましたらご指摘ください。
よろしくお願いします。
0504NAME IS NULL
04/06/28 05:42ID:RRETUxiQレンタルサーバー上のphpMyadminでDBしてます。
phpMyadminは大変便利なのですが、毎回毎回
ブラウザ上で一件、一件、データを入力していく作業に
萎えてしまいました。。
そこで、CSV(エクセルで作ったやつ)を
phpMyadminに取り込めないか(インポートできないか)
と思い質問させて頂きました。
phpMyadminはテキストファイルならばインポートできるので
CSVで作ったデータを Insert 文に変換してくれるような
ツールでもあれば・・・・と。。
知ってる方お願いします。
0505NAME IS NULL
04/06/28 05:58ID:???先ずリモートの端末からPort3306を叩いて、MySQLの応答をチェックする。
バージョン等が返される筈だ。WindowsのMySQLの場合、特に名前付きパイプ
(Unixでいうソケット)を使うように設定しない限り、デフォルトでは
localhost(ループバック/127.0.0.1)の接続にもPortが使用される。
OSや防火壁の設定でループバックアドレス以外からのPort3306を塞いでいないか、
MySQLの設定でskip-networkingが設定されていないか、確認。
話はそれからだ。
0506NAME IS NULL
04/06/28 06:07ID:???phpMyAdminにCSVの取り込みって機能ないか?あるような気がするけど。
無ければ、SQL文の LOAD DATA INFILE 構文を使う。
http://dev.mysql.com/doc/mysql/ja/LOAD_DATA.html
但しLOCALファイルの読み取りは、
http://dev.mysql.com/doc/mysql/ja/LOAD_DATA_LOCAL.html
により抑制されている可能性はある。
0507NAME IS NULL
04/06/28 07:49ID:crpwbbusブラウザから取得した2004/06/28をdate型(多分2004-06-28かな?)でMysqlにぶちこむのは
どうすればいいですか?よろしくおねがいします。
0508NAME IS NULL
04/06/28 08:21ID:???あなたが考えうる「こうなら出来る可能性」をいくつか列挙せよ。
そうすれば、あなたに最適な解が見つかるかも知れぬ。
要するに、あまりにも初心者な質問なんで、あなたのレベルを疑ってるわけですな。
0509507
04/06/28 09:04ID:crpwbbusstrftime(YYYY-MM-DD, date())
でエラーがでましたけど?
0510NAME IS NULL
04/06/28 09:51ID:???なるほど、そんな風に試していたとは、面白いですな。
strftime() なんてものは、MySQLにはありません。
また、date() は、使い方が間違っています(それに、MySQLのバージョンにも気をつけてください)。
http://dev.mysql.com/doc/mysql/ja/Date_and_time_functions.html
でもよく読んで、どうやればいいか、考えてみてくださいな。
0511NAME IS NULL
04/06/28 13:53ID:???「ブラウザから取得した2004/06/28」の処理は一体どうしてる?
そもそもブラウザから何の日付をどうやって取得してるの。
0512507
04/06/28 14:50ID:kEtBHY01なんでもかんでもMysqlでやりゃあいいってもんじゃないな。
0513503
04/06/28 16:00ID:???レスありがとうございます。
ポートを叩いて応答をチェックすると言う方法が見つからなかったので
ttp://www.cman.jp/network/support/port.html
を利用させてもらいました。
アクセスできました。
応答時間は 0.088秒 でした。
というメッセージがでました。バージョン等については確認できておりません。
火壁関係は現在は切っています。尚、同じ鯖機でHTTPサーバーは問題なく動いております。
>>MySQLの設定でskip-networkingが設定されていないか、確認。
とのことでmy.confというファイルに設定されているとかかれてあったのですが
私のCドライブ全体を検索してもmy.confがでてこず、my.iniならあります。
my.iniの内容
[WinMySQLAdmin]
Server=C:/mysql/bin/mysqld-nt.exe
port=3306 #これは私が付け足したものです。
この三行のみとなっております。
また、これはmysqladmin1.4のErr File項目の一部抜粋なのですが
040628 3:31:15 Aborted connection 3 to db: 'test' user: 'root' host: `localhost' (Got an error reading communication packets)
Version: '4.1.2-alpha-debug' socket: '' port: 3306
mysqld: ready for connections.
040625 18:50:09 Aborted connection 14 to db: 'mysql' user: 'root' host: `localhost' (Got an error reading communication packets)
このようになっております。
0514504
04/06/28 16:47ID:UbppIuJA回答有難う御座います。phpMyadminの SQL をクリックして
コマンド入力からやってみましたが、以下のエラーメッセージが出ました。
実行されたSQLクエリー :
LOAD DATA INFILE "data.csv" INTO TABLE 2ch;
MySQLのメッセージ -->
#1045 - Access denied for user: '2ch@localhost' (Using password: YES)
レンタルサーバーではload date infile を使えない場合があると聞きました。
ただ、phpMyadminで一件一件入力したDBを「完全なINSERT文の作成」
にチェックを入れてローカル側にエクスポートして、そのファイルの拡張子を
txtに変更し、「SQL」の中にある、OR テキストファイルの場所 :
という所に入れ込み、実行するとインポートできました。
,3,3,3,3,3,3,3, というようなCSV形式を INSERT文に変更して吐き出せれば
変更できるという事なのでしょうか・・・・
それとも、エクセルなどで作ったCSVをインポートする事は不可能なのでしょうか。
0515NAME IS NULL
04/06/28 17:33ID:sAJgIRh0クエリを作れる方法ってないんですか?
0516NAME IS NULL
04/06/28 23:24ID:???そこで出ているのは件の構文以前の問題。
MySQLユーザ及びデータベース/テーブルの指定が間違っているので権限エラーとなっている。
>レンタルサーバーではload date infile を使えない場合があると聞きました。
示したリンク先を注意深く読んでくれ。
|LOAD DATA LOCAL INFILE がサーバまたはクライアントで無効になっている場合、
|次のエラーメッセージ(1148)が表示されます。
|The used command is not allowed with this MySQL version
# さくっとPHPかなんかで自前でCSV→SQL作るのも
# 手馴れた人ならそっちの方が簡単かもね。
0517NAME IS NULL
04/06/28 23:32ID:???http://dev.mysql.com/doc/mysql/ja/ANSI_diff_Views.html
あるいはMaxDBを使うとか。
0518NAME IS NULL
04/06/28 23:33ID:???(権限データベース上で)ピンポイントで使用を抑制することはできない。
# 指定した特定のSQL文のみを使えなくするような仕組みが用意されていない。
0519NAME IS NULL
04/06/29 00:16ID:???「ポートを叩いて応答をチェック」というのは言葉が足りなかったが
「telnetを使ってチェックする」だ。ポートスキャンではスキャンの仕組み(やり方)
にもよるが、ポートの開きしかチェックできない。telnetでのチェックはポートが
開いているか、そのポートでMySQLが待ち受けてるかのチェックを行うことができる。
横着せずに、telnetの使い方を調べてチェックすること。
(telnetはデフォルトの場合はport23を使用するので注意)
勿論一足飛びに、リモートの端末にMySQLのクライアントツールをインストールして
「mysqladmin -uMySQL管理者ユーザ -p管理者ユーザのパスワード -hリモートのMySQLサーバのアドレス -P3306 ping」
というのでも良い。この場合は指定したMySQLユーザのサーバへのリモートアクセス権限もチェックできる。
>また、これはmysqladmin1.4のErr File項目の一部抜粋なのですが
エラーログを見た感じでは
・Port3306でMySQLはちゃんと待ち受けている。
・原因はリモート関係の権限テーブル絡みではない。
・同様の環境用意して要調査な内容かな…
な感じがします。出来るならば別のバージョンのMySQLに入れ直して試してみてください。
----
ここからはリモートアクセスには関係ないことだが、一応指摘。
・Windowsの場合はMySQLの設定ファイル名がmy.iniとWindowsスタイルになっているので、それでOK。
・[WinMySQLAdmin]セクションに指定したものはWinMySQLAdminにしか使用されないオプションの設定となる。
(付け足したport=3306はデフォルトの指定と一緒なので悪さもしないが)
・skip-networkingはMySQLサーバのオプションなので、記述されるとしたら[mysqld]セクションとなる。
0520504
04/06/29 01:03ID:mrjcTom/回答ありがとうございます。
何度やっても、#1045エラーが出るので、下記のようなphp作って
強引にinsert文を吐き出させて、それをphpMyadminで読み込ませるように
しました・・・・。これだと・・・・後々大変そうですが・・・・。
<?
if(!($MyFile = fopen("hotel.csv", "r")))
{
print("hotel.csvが開けませんでした。");
exit;
}
while(!feof($MyFile))
{
$MyLine = fgetcsv($MyFile, 4096);
if($MyLine[0])
{
print("INSERT INTO `テーブル名` (`項目1`, `項目2`) VALUES ('" . $MyLine[0] . "', '" . $MyLine[1] . "', '" . $MyLine[2] . "');<br>");
}
}
fclose($MyFile);
?>
0521NAME IS NULL
04/06/29 01:22ID:???Error: 1045 SQLSTATE: 28000 (ER_ACCESS_DENIED_ERROR) Message: Access denied for user '%s''%s' (using password: %s)
(http://dev.mysql.com/doc/mysql/en/Error-handling.html)
権限がないんじゃないのか、そのエラー。
0522NAME IS NULL
04/06/29 01:27ID:P6e1faJ/このコピペを必ず5つのスレに書き込んでください。
あなたの好きな人に10日以内に告白されます
嘘だと思うんなら無視してください。
ちなみにあなたの運勢が良かったら5日以内に告白&告白したらOKされます
0523NAME IS NULL
04/06/29 01:48ID:???excelの出力するcsvは文字コードがSJISだけど、
phpMyAdminで読み込む際にはちゃんと考慮されてるんかな?
あとタイムリーにPHP-users MLでこんな話も。
http://ns1.php.gr.jp/pipermail/php-users/2004-June/022893.html
スレッドでは2つの話が交錯して判り辛い(スレッドの大元の原因が別の理由のため)が、
関係あるのは最近のPHPでは「fgetcsv()がバックスラッシュが含まれると
無条件にエスケープする」という部分。
http://ns1.php.gr.jp/pipermail/php-users/2004-June/022895.html
の様に自分でfgetcsv相当を処理した方が安全。
0524poosan
04/06/29 01:52ID:xCqzAJ9b40GB ノートで、時代先取り!
ここです!
http://page2.auctions.yahoo.co.jp/jp/auction/b52847380
明日から余裕の笑顔で、40GB ノート ルンルン♪
0525503
04/06/29 12:35ID:???度々細かな助言ありがとうございます。
これからできるところから取り組んでいきます。
また報告いたします。
>>521
私のことでしょうか?
一応503にエラーメッセージは書かせていただいたのですが
failed: Host 'ホスト名' is not allowed to connect to this MySQL server
みたいなことになっております。
mysql側のエラーではもしかしたらAccess denied になってるかもしれないと
言うことでしょか?
リンクいただいたエラーリストについても調べさせていただきます。
ありがとうございます。
0526NAME IS NULL
04/06/29 14:38ID:???多分>>521 は>>514 に対する書き込み
0527NAME IS NULL
04/06/29 22:38ID:xxmnIlfK検索パフォーマンスに優れたといわれる、Mysqlと他のDBMSを比較された
サイトなどありましたらご紹介ください。
0528NAME IS NULL
04/06/30 00:13ID:???http://pc5.2ch.net/db/
0529NAME IS NULL
04/06/30 01:33ID:sgp6vFc9文字列はPHP4でINSERTしてて、PHPのHTML自体はShift-JISで出力してます。
一応Shift-JISのHTMLで文字化けせずに表示されてるのですが、文字コードを内部変換してるようなら
はじめからShift-JISで文字列を記録したいなーと思いまして。
0530NAME IS NULL
04/06/30 02:06ID:???貴方がデフォルトで使うと指定(設定)したコード。
但しMySQL4.0だとMySQL全体でひとつの文字コードしか指定できない。
0531NAME IS NULL
04/06/30 15:23ID:+bsyRVlJSELECT id, count(id) as count FROM table GROUP BY id;
count が10より多いものだけを表示するような形にしたいのですが、
どのようにしたら良いのでしょうか?
where count > 10 としてもダメでした。
初歩ですいません(>_<)
0532NAME IS NULL
04/06/30 15:23ID:+bsyRVlJ0533NAME IS NULL
04/06/30 15:42ID:???では?
0534NAME IS NULL
04/06/30 16:42ID:+bsyRVlJ>>532でダメって書いちゃいましたが、今やったら出来ました。打ち間違えてたようです。
0535NAME IS NULL
04/06/30 22:00ID:DN2mHe1vsqlファイルのインポートってQuery windowからするんですよね?
実行しても全然インポートされないのですが・・・。
ぐぐっても出てこないので・・・。
お願いします。
0536535
04/06/30 22:16ID:DN2mHe1vという大事なことを記載漏れしました(汗
おやさしいかたよろしくお願いします。
0537NAME IS NULL
04/07/01 12:16ID:cnA5av7I0538NAME IS NULL
04/07/01 15:39ID:???メニューも日本語化されてるし、いらんと思うが。
そもそもphpMyAdminが判らんつうのは、MySQLの操作やSQLを
知らないことに起因することが多く、確かにphpMyAdminはGUI化
されていて色々できるようになっているが、独自の操作という物はない。
# このご時世なので、レンタルサーバのMySQLをphpMyAdminだけを使って・・・
# という本/サイトはあっても良いかも知れないが。
書籍だと「MySQL徹底活用」にSQLの基礎〜MySQLの管理、
phpMyAdminの使い方などが解説されてる。
0539NAME IS NULL
04/07/01 16:18ID:DoBGJWEM完全唯一なユニークIDの精製はどうやってますか?良い例を教えてください。
PHP関数の uniqid(KEY,TRUE) の値を、varchar(26)に入れてますがしっくりしません。ピリオド.入ってますし・・・
0540NAME IS NULL
04/07/01 16:24ID:???ちなみにmhash関数が使えない環境です。チョット関係ないですが。
0541NAME IS NULL
04/07/01 17:46ID:DwlsJKEn3,4,3
1,2,3
2,3,4
という3つのレコードがある場合に
Cフィールドをグループ化してAフィールドの一番小さいに値をだしたいのですが
select A from table group by C order by A としても
Cが3のレコードのAフィールドが3になってしまいます。
本当は1をだしたいのですがどうすればよいのでしょうか?
0542NAME IS NULL
04/07/01 17:54ID:???質問がわかりにくすぎ
レコードとフィールドの値を混乱させるような例にしない
0543NAME IS NULL
04/07/01 23:04ID:???他のユーザーを消そうとして間違ってroot@localhostを削除してしまいました。orz
一応mysqld_install_dbなどを実行させてはみたものの
/usr/bin/mysqladmin -u root password 'new-password' で、
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user: 'root@localhost' (Using password: NO)'
と出てきてしまいます。どうかこのずぶの初心者に復旧方法をご教授のほどよろしくお願いします。
0544NAME IS NULL
04/07/01 23:25ID:???[忘れたルートパスワードをリセットする方法]
http://dev.mysql.com/doc/mysql/ja/Resetting_permissions.html
要するに管理アカウントが無効となった状態から
どのように復帰するかの解法。
0545NAME IS NULL
04/07/01 23:34ID:???ああ、mysqld_install_dbは権限テーブルを初期設定に
するんじゃなくて初期設定を作るんで、既に権限テーブル
がある場合には、そいつ(権限データベース/テーブル)を
削除しないと - つまり他のユーザ情報や権限は消える -
スクリプトを実行しても初期状態にならないよ。
0546543
04/07/01 23:35ID:???すみません、ありがとうございます。
一応そこみてやってみたんですけど、versionのせいなのか
mysql --skip-grant-tables
の段階で、
mysql: unrecognized option `--skip-grant-tables'
mysql Ver 11.18 Distrib 3.23.54, for redhat-linux-gnu (i386)
Copyright (以下略
と出て再起動されないんです。
0547NAME IS NULL
04/07/01 23:42ID:???どの程度ユニークなのが欲しいのか判らんが
uniqid→md5ハッシュぐらいでいいんじゃないの?
0548NAME IS NULL
04/07/01 23:44ID:???mysql (クライアント)のオプションじゃなくて、
mysqld (サーバ)の起動オプション。
0549543
04/07/02 00:22ID:???。。。。_| ̄|○ ウツダシノウ・・・・
/etc/rc.d/init.d/mysqld start --skip-grant-tables
でいいんでしょうか?これやると一応 起動はOK出るんですけど
> mysqladmin -u root password 'mynewpassword'
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user: 'root@localhost' (Using password: NO)'
> mysql -u root mysql
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
。。。。。。_| ̄|○ アキラメロッテカ・・・・
0550NAME IS NULL
04/07/02 03:15ID:???なんかRPMで入れてるっぽいな。
「/etc/rc.d/init.d/mysql stop」でちゃんと止めた?
http://dev.mysql.com/doc/mysql/ja/Automatic_start.html
のRPMの場合(RHL9以降は/etc/init.d→/etc/rc.d/init.d)
因みにRHLなどのレイアウトでの/etc/rc.d/init.d/mysql (mysql.serverスクリプト)
と/usr/bin/mysql (MySQLクライアント)は別もの。
mysqlと打って起動するのはパスの関係上、通常は後者。
更に言うと、/etc/rc.d/init.d/mysqld、/usr/sbin/mysqld辺りも区別すること
0551NAME IS NULL
04/07/02 04:19ID:???0552NAME IS NULL
04/07/02 11:50ID:???md5ハッシュだと厳密にユニークでは無くなるぞ。
http://e-words.jp/w/MD5.html
0553NAME IS NULL
04/07/02 11:59ID:???いいじゃん、だいたいで
0554NAME IS NULL
04/07/02 12:10ID:???0555543
04/07/02 13:26ID:???/var/lib/mysql/mysql にあるファイルをすべて消去して、
/usr/bin/mysql_install_db を実行
/etc/rc.d/init.d/mysqld start --skip-grant-tables で起動して
/usr/bin/mysqladmin -u root -h ****.*** password '**********' で設定、再起動
という手順でできました。
皆様ありがとうございました。
0556547
04/07/02 16:28ID:???それは見落としてた。なら、使う前にデータベース上の
テーブルで既に使ってないかチェック(ロックしつつ)
して使うだな。既に使ってたら新たに取り直す。
あとuniqidもマイクロ秒由来だけど、完全無比のユニークではない。
0557NAME IS NULL
04/07/02 16:39ID:???その手順の場合は、権限テーブルは既に削除&初期化済みなので
--skip-grant-tablesはいらないよ。
それと--skip-grant-tablesな時は無防備な状態なので、
可能なら、併せて--skip-networkingを付けて
ネットワーク越しのアクセス許可も一時停止させた方が良い。
いつもlocalhostからのみの接続だけなら、普段から
--skip-networking付けて運用するのが安全だね。
0558NAME IS NULL
04/07/02 19:50ID:???WEBみながら設定してたらいつのまにかrootのpassを
設定してしまったみたいでdatabaseに繋げなくなった
のでアンインストールしてもう一度インストールした
んですけど、既にパスが設定されているみたいでやっぱり
つなげません。
ってか再インストールした後にGUIツール立ち上げても
初期のアカウントとpassの設定画面でてきませんでした。
mysqlの初期のpassって何処に格納されてるんですかね?
0559NAME IS NULL
04/07/02 21:19ID:???取り合えず>>543からの流れを読んで、参考にして対処せよ。
それと他人に訊く前にマニュアルを読むこと。
訊いてる基本的なことはそこに書いてある。
判らなければ「ディレクトリごと削除して」再インストール。
0560NAME IS NULL
04/07/02 22:23ID:???unique indexで指定して乱数をinsertして
SQLException発生したらやり直す・・でいいんじゃないか?
てゆっか、auto_incrementでなんでいけないの?
0561NAME IS NULL
04/07/03 01:35ID:poCSVMuqselect * from XXX limit 4900000,10;
というクエリを送ったら結果が出るのに数十秒かかるんですが
もっと時間を短縮できる方法はありますか?
0562NAME IS NULL
04/07/03 01:40ID:???0563NAME IS NULL
04/07/03 02:12ID:y02b0D0uオラウータンなどの
サルは自分と似ていない自分の子供を(子殺しする)殺す。
(立花隆『サル学の現在』平凡社より)
http://www.google.co.jp/search?q=cache:YzJwPXsiJZAJ:www.impala.jp/bookclub/html/dinfo/10110005.html+%E3%82%B5%E3%83%AB%E5%AD%A6%E3%81%AE%E7%8F%BE%E5%9C%A8%E3%80%80%E5%AD%90%E6%AE%BA%E3%81%97&hl=ja
0564NAME IS NULL
04/07/03 03:09ID:???order以前に単なるlimit句が遅いので困ってます。
limit 0,10 だと速いけど limitの開始位置が大きくなるにつれて遅くなっていきます。
0565NAME IS NULL
04/07/03 13:09ID:???ユーザー名が"zzzz"でユーザーパスワードが"passoword"
で、phpからmysqlに接続しようとしてるんだけど
<?php
$con = mysql_connect("xxxx.com","zzzz","password");
$selectdb = mysql_select_db("yyyy",$con);
で
Fatal error: Call to undefined function: mysql_connect() in /****/***/****/****.php on line 2
ってでるんだけどもしかして何かモジュールいれわるれてるの?
0566NAME IS NULL
04/07/03 13:49ID:???だから、>>562も言ってるとおり、
"select *"が問題なんだってば
カラムは全部呼び出す場合でも全部列挙が基本だよ
このネタも禿しくガイシュツなのだ。
0567NAME IS NULL
04/07/03 14:06ID:???日本語表示されません。ブラウザはIE6.0です。ヒントください。
0568NAME IS NULL
04/07/03 19:22ID:???phpMyAdminの最新版は2.6.0-beta X なわけだが……。
まぁいいか。
$cfg['DefaultLang'] = 'ja-euc';
$cfg['DefaultCharset'] = 'euc-jp';
とでもしとけ。SJISとかJISとかだったら自分で調べてくれ
0569NAME IS NULL
04/07/03 22:53ID:???$cfg['DefaultLang'] = 'ja-euc';
$cfg['DefaultCharset'] = 'euc-jp'
にして日本語表示できました。
ありがとう。
0570NAME IS NULL
04/07/03 23:22ID:???>>562は "select *" なんて問題にしてないでそ。
俺は>>562に同意。それか主キーが無ければ付けるとか。
0571NAME IS NULL
04/07/04 12:51ID:???超初心者なので、その英文のエラーが読めません。
日本語訳を併記してもらえれば多分判ると思うんですが...
# つか先ずはGoogleにそのままエラー文を放り込め。
0572NAME IS NULL
04/07/04 15:06ID:???/etc/rc.d/init.d/mysqld start
と
/usr/bin/safe_mysqld &
で起動するのではどこが異なるのでしょうか?
ググってみてもでてきません。
ちなみに環境は
fedora core 1
mysql 3.23
rpm(yum)でインストールしました。
0573NAME IS NULL
04/07/04 17:54ID:???一回アンインストールして、もう一回入れなおそうと思うのですが
/usr/local/mysql/ 以下を全部消せばいいんでしょうか?
mysql3.23です
0574573
04/07/04 19:20ID:???それで、
mysql> SELECT * FROM user;
で引いてみると、rootが二つあるんですが、片方消しちゃってもいいんでしょうか?
0575NAME IS NULL
04/07/04 22:00ID:???学習を"体得"でこなしてるみたいだから
試しに片方ずつ消してみな。
0576539
04/07/05 13:36ID:wOk/pFDO>>560
MySQLのauto_incrementの仕様ではDELETEなどで欠番が生じた時に、その欠番を再利用してしまうので。
似たようなテーブルを一旦統合して、一括して検索をしたり、IDと分類要素で元のデータの関連を推測したりするので。
そのときは、欠番したIDも検索対象だし。
0577NAME IS NULL
04/07/05 17:15ID:FFYqojs5いるんですが、どうもmysql_queryの中で8バイトほどリークしている気配
濃厚なんです。いろいろ検索かけてみたのですがどうも見つかりません。
どなたかご存知ないですか?
0579NAME IS NULL
04/07/06 01:24ID:???それは PRIMARY KEY に指定した場合でそ。(普通はそうする
だろうが)
http://dev.mysql.com/doc/mysql/ja/example-AUTO_INCREMENT.html
ここの一番下の注意書き
0580NAME IS NULL
04/07/06 04:33ID:???「最大+1が常に採用される」なので、
最後尾から削除すると、番号が再利用される。
0581NAME IS NULL
04/07/06 13:00ID:wxaMCESCsubstr_replace(md5(uniqid(KEY,TRUE)),"",12)
0582NAME IS NULL
04/07/06 13:01ID:???0583NAME IS NULL
04/07/06 13:58ID:???timestampを変更したくないときはどうしたらいいですか?
insertのときのtimestampのみを保持する方法って感じで
0584NAME IS NULL
04/07/06 16:13ID:???update gp set time=time;
てな感じで、timestampのカラムにtimestampのカラムの値を入れるようにする。
これで、意味分かるか?
0585NAME IS NULL
04/07/06 17:18ID:???とりあえずコレ読んで
MAXDB モードで実行していないときの TIMESTAMP の動作 @c INSERT STOP
http://dev.mysql.com/doc/mysql/ja/DATETIME.html
0586583
04/07/06 18:06ID:???(゚∀゚)サンクスコ
>DATETIME カラムを使用してレコードの作成時に値を NOW()
>に初期化し、後続の更新時にはそのままにしておくというのも、
>手軽な方法です。
これでが手軽で方法でした
0587NAME IS NULL
04/07/06 23:14ID:0nq+8XswCPU負荷が常に99%になってMySQLが落ちるんだけど何で?
[mysqld]
port=3306
socket=/tmp/mysql.sock
#skip-networking
skip-locking
skip-bdb
skip-innodb
log-bin
server-id=1
tmpdir=/tmp/
#log-update = /path-to-dedicated-directory/hostname
back_log=256
max_connections=2048
#max_connect_error=65536
#max_connect_error=1048576
max_connect_error=999999999
flush_time=900
max_allowed_packet=1M
query_cache_limit=64K
query_cache_size=16M
key_buffer=4M
table_cache=32
sort_buffer_size=1M
record_buffer=1M
read_buffer=32K
net_buffer_length=8K
myisam_sort_buffer_size=8M
net_read_timeout=15
net_write_timeout=60
thread_stack=32K
thread_cache=512
thread_concurrency=2
0588NAME IS NULL
04/07/07 11:33ID:???#max_connect_error=1048576
max_connect_error=999999999
0589NAME IS NULL
04/07/07 22:28ID:hEsyl3hR同梱のマニュアル通りにmysqlユーザーとグループ作って、Dataディレクトリのアクセス権をmysqlに変更しました。
で、シェルがrootで動いてるとMySQLって起動できないのですか?
su mysqlして起動するとうまくいきます
0590NAME IS NULL
04/07/07 23:05ID:???クエリを最適化してコネクションが短時間で終わるようにしてコネクション数を
減らすのが抜本的解決だとおもう。仮に1000コネクション貼れてもスレッドが多すぎて
速度落ちるでしょ。
>>589 -p -uオプションつければいいんじゃないすか。
0591NAME IS NULL
04/07/08 00:11ID:???mysqldは通常rootでは走らせられまへん。
http://dev.mysql.com/doc/mysql/ja/Security.html
> MySQL デーモンを Unix root アカウントで実行しないこと。
<中略>
> --user=root オプションを使用して直接指定された場合を除き、
> mysqld は root として実行することを拒否するようになっている。
su mysqlせんでも、mysql.serverに --user=mysql を追記するか
my.cnfに
[mysqld]
user=mysql
を書けばよろしい。
>>590
Unix user/MySQL user、 mysqld/mysqlを混同してるでそ。
0592NAME IS NULL
04/07/08 01:34ID:???言ってるんじゃないかな。それだとmysqlユーザーを指定すれば動くでしょう
589の人が「起動できない」のメッセージを書いてくれればわかりますが。
0593NAME IS NULL
04/07/08 04:32ID:NU6Q2zpbSQL文の中に変数を入れていたら(テーブル名など)
変な動作しませんか?
どうも原因不明のエラーが出ていて、
それが原因じゃないかと疑っているのですが…
0596594
04/07/08 10:24ID:???そ、そんな問題が・・・
ありがとうありがとう。
ちょっと心配だったので、助かったよ。
0598NAME IS NULL
04/07/09 00:09ID:???DISKの問題なら、テーブルをシンボリックリンクで複数のDISKに振り分けると
とりあえず書き込みとかは速くなります。
0599NAME IS NULL
04/07/09 03:36ID:EtX6nQbtそれは結構問題だと思うんですが…
0600NAME IS NULL
04/07/09 04:09ID:???いや、別に5000コネクションぐらいは取り合えず問題は無いが。
数だけ上げるならそれなりの機材があれば多分大丈夫でしょ。
ただそのくらいの数が本当に待ちに入ってるなら根本設計からして
オカシイ(何かしら無理がある)というのはいえると思う。
俺は1000辺りで駄目になった事例がないので、件のについて
何も言えない。例えばメモリが極端に少ないとかあると落ちるかも。
よもやMySQLサーバに他の主要なサービスを同居させてるとも思えんし。
0601NAME IS NULL
04/07/09 14:32ID:9+NRNE0K0602NAME IS NULL
04/07/10 01:24ID:???A.2.6 Too many connections エラー
MySQL 接続の最大数は、スレッドライブラリが特定のプラットフォームでどの程度まで有用であるかに依存します。
Linux または Solaris では、使用している RAM のサイズと、クライアントが何を実行しているかによって、
500 〜 1000 の同時接続をサポートできます。
こんなこと書いてあった
0603587
04/07/11 06:31ID:???MySQL Cluster使うのに4.0から4.1へ移行するのが不安だったので、
とりあえず、ディスク7本をRAID0構成にしてつないでみました。
ディスクを変えるだけで結構速いですね。
>>600
Apache1.3にmod_mylog入れて使っているんですが、やはりApache側が
2000コネクションを超えたあたりで、MySQLサーバー側が吹っ飛びます。
サーバーは下記のような構成です。
OS: FreeBSD4.10
CPU: Xeon2.0GHz(HT有効) x2
MEM: 2GB
HDD: U160 10000rpm x7 (MegaRAID E1600/cache128MB)
LAN: IntelPRO1000MT
上記とほぼ同じ構成(HDDがIDE)でApache用にFreeBSD5.2.1を入れた機材とつないでます。
吹っ飛ぶまではロードアベレージ1以下でCPU占有率も10%前後なんですが、
そのまま放置すると不確定のタイミングで暴走するんです。
0604587
04/07/11 06:36ID:???同様の問題が発生したのでFreeBSD5.2.1に一度変えて、それでもダメで、
FreeBSD4.10に変えてみました。
それでもダメなようなので、OSとは関係ない部分だろうなと推測してます。
なんでだろう。
0605名無しさん@そうだ選挙に行こう
04/07/11 13:07ID:???コネクション張ったままで、各コネクションに毎には
負荷を掛けてない状態でそうなると考えて良いのかな?>現状の事象
0606587
04/07/11 16:13ID:???PHPのmysql_pconnect()による接続でselectを連発と、mod_mylogによる
insertの連発のどちらでも発生するのでコネクション周りに何らかの
問題があると思うのですがねぇ。
どちらも0.01〜0.03秒くらいで終わるような内容なんで、負荷自体は
たいしたこと無いのですが。
吹っ飛ぶとApache側を止めて一切クエリを発行していないのに全開で
回っているようなのでどこかでメモリリークでも起きてるのかなぁ。
0607NAME IS NULL
04/07/11 21:54ID:???1秒にさばけるクエリ数は逆に速くなりますよ。
コネクション数増やすと全体としては遅くなります。
0608587
04/07/11 23:26ID:???ってことは、mysql_pconnect()ではなくmysql_connectを使って、
クライアント側の継続的な接続を止めるべきですかね?
0609NAME IS NULL
04/07/12 00:36ID:???インストーラーを起動させようとすると↓のようなエラーが出るよヽ(´Д`;)ノアゥア...
なにゆえ??
http://www.asahi-net.or.jp/~zn4m-ookw/sql.jpg
WinXP Pro SP1です。
0610NAME IS NULL
04/07/12 03:33ID:???そのくらいのパスの深さなら問題ないと思うのだが、
試しにc:\mysql-4.0.20d-winにインストーラの
ディレクトリを置きなおしてやってごらん。
0611NAME IS NULL
04/07/12 14:52ID:???↓のような流れで組んだプログラムで
テーブルAのアップデートをロールバックしてくれません。
テーブルロックをしないと正常にロールバックします。
トランザクション中ではロックはかけないものなんですか?
トランザクション開始
AとBをテーブルロック
テーブルAアップデート
テーブルBアップデート
テーブルB更新エラー
ロールバック
0612NAME IS NULL
04/07/13 00:28ID:???http://web.kuicr.kyoto-u.ac.jp/manual/mysql/manual.ja_Linux.html#Linux
1000以上の同時接続を使用する予定であれば、LinuxThreads
にいくつかの変更をして、再コンパイルし、MySQL を新しい
`libpthread.a' を使用するように再リンクする必要があります。
これはどう?
0613名無し募集中。。。
04/07/13 00:55ID:???rootで「mysqld_safe --user=mysql」しても起動してくれません。
mysqlユーザーにsuで変更してやると起動します。
付属のインストールマニュアルにはそんなこと書いてないのですが、
暗黙の了解なのですか?
0614NAME IS NULL
04/07/13 12:57ID:???ロックの必要ないでしょ
そのためのトランザクションなんだから
0615NAME IS NULL
04/07/13 13:23ID:???ユーザmysqlを凡人でもアクセスできるようにするとk
0616587
04/07/13 16:08ID:???うーむ、今はFreeBSDに移行してskip-name-resolveも付けているしなぁ。
LinuxThreadも使ってないのでFreeBSDのpthreadも修正する必要があるのかなぁ。
0617611
04/07/13 16:44ID:???そうなんですか?
テーブルBの更新が完了するまでテーブルAの更新は行ってほしくないし、
テーブルA更新中にテーブルBの更新もしてほくくないのですが、
テーブルA更新中にテーブルBへの他セッションでの更新は
ただしく排他されるんでしょうか?
0619NAME IS NULL
04/07/14 02:59ID:???素人の横槍ですまんが、
AとBをテーブルロック
(これで他のセッションからの更新を排他)
(ロールバックするかもしれないので…)
トランザクション開始
(おもむろに…)
テーブルAアップデート
テーブルBアップデート
テーブルB更新エラー
(ありゃ、失敗。じゃあ…)
ロールバック
AとBのテーブルロック解除
(このトランザクションはなかったことにして、他のセッションがあるならドゾー)
ではないのかなぁ。
0621611、617
04/07/14 14:29ID:???お返事ありがとうございます。
トランザクション開始前にロックするということですか?
それでやってみます。
>614、620
トランザクションを利用しない別セッションで発行したクエリが
テーブルBを更新してしまわないかと懸念したのです。
ちょっと自分の日本語がおかしい気がしますが、
わかって上記でわかっていただけましたでしょうか?
0622NAME IS NULL
04/07/14 16:17ID:???君がやろうとしていることは、可能。
おそらくもっと基本的なことを理解していないと思われ。
SQL文を貼り付けてくれていないから、その間違いを誰も指摘できないのでは?
例:
CREATE TABLE a (code INT) TYPE=InnoDB;
CREATE TABLE b (code INT) TYPE=InnoDB;
INSERT INTO a VALUES (1);
INSERT INTO b VALUES (1);
SET AUTOCOMMIT=0;
START TRANSACTION;
LOCK TABLES a WRITE, b WRITE;
UPDATE a SET code=10 WHERE code=1;
UPDATE b SET code32=10 WHERE code32=1;
/* ここでSELECT * FROM a;で10*/
UNLOCK TABLES;
ROLLBACK;
/* ここでSELECT * FROM a;では1*/
0623NAME IS NULL
04/07/14 16:28ID:???ちなみに行いたい処理にもよるが、
通常、LOCK TABLESなりFOR UPDATEなりは必要だと思う。
もちろん隔離レベルによっても変わってくるけど。
0624611、617、621
04/07/14 16:45ID:???619さんが書かれてるようにロックを先に行ったら
思うとおりにロールバックができました。
ありがとうございました。
>>622
私のSQLもそのような感じで
UPDATE b SET code32=10 WHERE code32=1;
が、こけてロールバックした際に
SELECT * FROM a が1となってしまいました。
SQLの表記までわざわざありがとうございます。
0625NAME IS NULL
04/07/14 17:36ID:YlrfEVow....
START TRANSACTION; ----- これは無駄。
LOCK TABLES a WRITE, b WRITE;
....
なぜって、LOCK TABLESはトランザクションセーフじゃなくて、
LOCK TABLES実行前に暗黙的にコミットされるから。
(START TRANSACTIONは直後にコミットされるわけ)
だから、実は上の例でLOCK TABLESが有効に機能しているのかどうかもあやしい。
すべてSET AUTOCOMMIT=0の働きのようなきがする。
ROLLBACKできるからいいっちゃいいんだけど。
0626NAME IS NULL
04/07/15 01:14ID:???>> LOCK TABLES実行前に暗黙的にコミットされるから。
これはあまり認識されていないようです。
CREATE TABLE a (code INT) TYPE=InnoDB;
CREATE TABLE b (code INT) TYPE=InnoDB;
INSERT INTO a VALUES (1);
INSERT INTO b VALUES (1);
--- 無駄 --- SET AUTOCOMMIT=0;
START TRANSACTION;
--- 無駄 --- LOCK TABLES a WRITE, b WRITE;
UPDATE a SET code=10 WHERE code=1; -- aがWRITE LOCK
UPDATE b SET code32=10 WHERE code32=1; -- bがWRITE LOCK
--- 無駄 --- UNLOCK TABLES;
ROLLBACK;
テーブルaもbもunique制約がないので、WRITE LOCKはテーブルレベル。
622さんの意図としてはテーブルaとbを同時にWRITE LOCKしたいのでしょうけど、
上の例だと、テーブルbのUPDATEする前に別セッションがbをいじると
UPDATE b SET ....が固まる(ブロックされちゃう)ので
ちょっとずれるか。
0627NAME IS NULL
04/07/19 13:30ID:m6ED5dOm参照したいのですが、うまくいきません。初心者レベルですみませんがどなたかいい方法を
教えてください。以下のコードです。
delimiter $
Create Procedure proc1 (IN parameter1 varchar(20), OUT resultset1 int)
BEGIN
SELECT price INTO resultset1 FROM books_table WHERE title_eng LIKE 'parameter1%';
END
$
Call proc1('Shopaholic', @price) $
SELECT @price$
とすると、結果@price = null となって出てきます。おそらく'parameter1%'を
そのままの文字列と認識して、それに当てはまるレコードがなくnull
が返ってくるのだと思います。ただ(’)をとってしまうとシンタックスエラーになって
しまいます。
よろしくお願いします。
0628NAME IS NULL
04/07/19 22:22ID:SfFDJs2yたとえば
tableA (id(int),userName(varchar))
と
tableB(userName(varchar),address(text))
なんて構成のテーブルを作っておいたとします。
それでuserNameで関連づけるのもデータベースによけいな負荷がかかりそうなんで、
tableBにuserId(int)って感じのフィールドを追加して、そのフィールドにuserNameを頼りに、
tableAのid(int)にupdateしたいと思ってます。
どんな方法がありますでしょうか?
以前まで使ってたFileMakerProならtableAのuserNameとtableBのuserNameでのrelationを設定して、全置換で置換できましたが、
MySQLではどうすればいいかわかりません。
どなたかご存じの方がいらっしゃったらお教えください。
ちなみに私の使っているバージョンは4.1.3Betaなので、subQueryを使った方法でもOKです。
すみませんがよろしくお願いします。
0629NAME IS NULL
04/07/19 23:54ID:???subqueryで一発。
しかしどちらもInnoDBなら、
tableBに外部キー(userName)を設定すればとも思いますが。
# CASCADEで
ただ、一番いいのはテーブルを再設計することかと。
# 何故テーブルA,Bが分割するのかがわからない。
0630NAME IS NULL
04/07/20 01:01ID:mjEJFd1Eどんなsubqueryで一発?
テーブルについては、参考にあげたやつは、確かに分割する意味ないよね。ごめん。
あとcascadeの詳細もできれば教えてくれるとうれしいな。
0631NAME IS NULL
04/07/20 06:31ID:ECKaP0Y3ストアドプロシージャでWHERE句の条件を2つ指定しているのですが、
条件1(Name)しか合っていないのにレコードが返ってきてしまいます。
一方条件2(Password)が合っていて、名前が違うときはレコードの
カウントは0で正しく動作します。なぜだかわからず困っています。
どなたかご指導お願いいたします。
CREATE PROCEDURE proctest
(IN Username char(20) ,In Pass char(10) ,Out Result int)
BEGIN
SELECT count(*)as count FROM personal where Name like Username AND Password like Pass;
SELECT count, case
when count=1 then 1
else -100
end Result;
END
0632NAME IS NULL
04/07/20 23:45ID:???MySQLの違いや、MySQLの利点を教えて
MTやるのにMySQL必要かなと思いまして
0633NAME IS NULL
04/07/21 01:36ID:???BerkleyDBを究めな。で,このスレッドには2度と来ないでね >> 632
0634NAME IS NULL
04/07/21 08:14ID:???え、そうなの?
0635NAME IS NULL
04/07/21 12:40ID:???単に理由を説明できないだけだろ
0636NAME IS NULL
04/07/21 15:09ID:???つうか、くれくれ厨房の632にわざわざ詳しく教えることなんかないじゃん。
0637NAME IS NULL
04/07/21 15:32ID:???0638NAME IS NULL
04/07/21 18:14ID:???関連するDBをすべてdropしました。
しかし、ディスクの使用容量はそれでは減らないと聞きました。
どうすれば、ディスクの使用容量を減らせるのでしょうか?
0639NAME IS NULL
04/07/21 18:27ID:???DROP DATABASEならディスクからは消えると思うぞ。
それ、どこから訊いたの?
#DELETEは直ぐには変わらない場合もある。
0640638
04/07/21 18:33ID:???あれ、そうなんですか。。。
きいたのは、某レンタルサーバ屋の技術サポセンです。
ま、本来はサポート範囲外なので、さらっときいてさらっと答えられた感じでしたけど。
0641NAME IS NULL
04/07/21 18:59ID:???>>DROP DATABASEならディスクからは消えると思うぞ。
MyISAMならばね。InnoDBだとどうなの?
0642NAME IS NULL
04/07/21 22:21ID:???てめーがこっちに書けってイッタンダド
0643NAME IS NULL
04/07/21 23:17ID:???XOOPSなんで、全テーブルがMyISAM型なんだわ。
InnoDBはMyISAMと違ってDB毎にファイルが分かれておらずMySQL全体で一種類。
また半固定サイズのファイル群で構成されていて、個々のファイルは完全に
不要となるまでは無くならないので、データレイアウトによってはテーブルの
DROPによっても、ディスク占有サイズは(余り)減少しないこともありうる。
但しテーブル定義ファイル(*.frm)はDROPで削除されます。
# この説明ではトランザクションは考慮していない。
データのDELETEによるディスク占有サイズの変化は
MyISAM/InnoDBの場合で、それぞれまた動作が異なるね。
0644638
04/07/22 02:12ID:???解決しそうです。
ありがとうございます。
0645NAME IS NULL
04/07/22 10:16ID:???カラムD、カラムEは抽出回数もWHERE条件にもなる可能性が低い場合
カラムD、カラムEは別テーブルとして保持していたほうが
効率的ということはありますか?
0646NAME IS NULL
04/07/22 12:31ID:???ほとんど差はないでしょう。
あったとしても、そのデータをディスクからメモリに読み込む時間とか、
微々たるもののはず(キャッシュ効果もあるし)。
その程度の細かな時間差は、CPU速度をちょっと上げるとか、
データ転送のはやいHDDにするだけで、簡単に吸収できる。
それより、テーブルは論理的に分割したほうが
メンテナンスもSQL作りも楽、システムとしても効率的。
0647645
04/07/22 13:16ID:???お返事ありがとうございます。
すいません一つ質問がございます。
論理的に分割とは具体的にどのようなことをするのですか?
よろしければ、ご教授ください。
0648NAME IS NULL
04/07/22 13:40ID:???正規化の是非は、ここで論じるのはやめよう > ALL
0649NAME IS NULL
04/07/22 15:42ID:???「insert into test values ('ソ',null);」というinsert文を実行したら
mysql> insert into test values ('ソ',null);
'>
'>
という状態でinsertが出来ません。色々試してみると文字の先頭に「ソ」がある場合に
上記の状態ないし文字化けしたりするのですが、回避方法がありましたら
ご教授願えませんでしょうか。
0650NAME IS NULL
04/07/22 16:44ID:???"
で囲ったら。
'ソ' --> "ソ"
0651NAME IS NULL
04/07/22 20:45ID:3OI4cPS6フィールド数が多いのでconcatで結合してやると
例えばAフィールドに'あいう' Bフィールドに'えお' として
'うえ'という文字で検索かけたらひっかかりますよね?
あくまで単体フィールドにその文字列が入っていればという処理を行いたいのですが
普通に ((A like str) or (B like str) or ・・・)と書く以外に
簡単な記述はありませんでしょうか?
0652NAME IS NULL
04/07/22 21:05ID:???レスすまそ。
>'ソ' --> "ソ"
それも含め試しましたが、実行出来ませんでした。
0653NAME IS NULL
04/07/22 22:01ID:???0654NAME IS NULL
04/07/23 00:53ID:???http://www.tmtm.org/ja/mysql/japanese.html
ここ見ると、--with-charset 付けてコンパイル
すると良いようだが。
0655NAME IS NULL
04/07/23 02:00ID:???まさしく、sjisのバックスラッシュの問題でした。
バイナリパッケージを使ってるので、設定を見直してみるとキャラクターセットがまずかったのを
直したら実行出来ました。
勉強不足でした、どうもすみません。
0656NAME IS NULL
04/07/23 09:56ID:???auto_increment で連番をふっていて、
レコード削除すると欠番がでますが、その欠番を
再利用するのはどうしたらよいですか?
0657NAME IS NULL
04/07/23 11:24ID:???自動でなく、手動で設定する。
0658NAME IS NULL
04/07/23 15:11ID:???主キーなら自分で探して埋めれ。
0659NAME IS NULL
04/07/23 15:27ID:???嘘。
0660NAME IS NULL
04/07/23 16:01ID:???単純にそのフィールドの最大値+1を自動的に入れる仕組み>auto_increment
だからそのフィールドで最大値を持っていたカラムの削除を行うと
その場合は再利用される。
0661NAME IS NULL
04/07/24 00:17ID:???テーブルの型によっても振る舞いが違うので、ここをよく読め。
http://dev.mysql.com/doc/mysql/ja/example-AUTO_INCREMENT.html
http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html
http://dev.mysql.com/doc/mysql/ja/InnoDB_auto-increment_column.html
0662NAME IS NULL
04/07/24 00:35ID:???ヤバイ香りがするよ。
0663NAME IS NULL
04/07/24 23:35ID:???たとえばオークションシステムを開発するとして、
1つのテーブルに全会員の売買履歴を保存する方法と
会員ごとにテーブルを作成し、そこに売買履歴を保存する方法の
2種類があると思います。
速度面で有利なMySQLを使うつもりですが、どちらの方法が
レコード追加、更新、削除処理などで効率が良いでしょうか?
0664NAME IS NULL
04/07/25 02:21ID:???会員制オークションなら後者(ユーザに付随)
但し売買の金額的な集計などを取る必要もあるので、
これは別個のテーブルに記録しといた方が良い。
ユーザの履歴から集計するのは現実的ではない場合が多い。
(会員規模にもよる)
0665NAME IS NULL
04/07/25 02:42ID:???コネクトするたびにファイルを読み込んでいるのでしょうか?
それとも一定期間メモリ上に展開されたままで処理が行われるのでしょうか?
DB設計上、こういったソフトウェア側の仕組みも知っておいたほうがいいと
思いまして。
0666NAME IS NULL
04/07/25 14:11ID:???http://dev.mysql.com/doc/mysql/ja/Memory_use.html
0667NAME IS NULL
04/07/25 15:54ID:???ふつーは売買情報を1つのテーブルにすると思うけれど。
会員制だからといって、会員ごとにテーブルを作るのはあり得ない。
0668NAME IS NULL
04/07/26 01:48ID:???リレーションも正規化もわかってなさそうな素人に
ごちゃごちゃいうのはやめようよ。
まず、RDBの基本を勉強してから、設計したほうがいいよ > 663
0669NAME IS NULL
04/07/26 18:46ID:???>>456-457
放置でよろ
0670NAME IS NULL
04/07/27 00:15ID:???(1) MySQL のライセンスを自分が買って、客にわたす。
(2) MySQL のライセンスは自分が買わずに、客が直接買う。
のどちらでしょうか?
もし、(2)がOKだったら、客がMySQLのライセンスをすでに
持っていたら、2重にライセンス料を払わずに済むというこ
とになる。
MySQLのライセンスは複雑すぎる。
誰か知ってる人、教えて!ヒントだけでもいいです。
ちなみにASPで使うときは無料です。
0671NAME IS NULL
04/07/27 00:58ID:???「MySQLを使うソフトを(所有権/使用権)売る」なら
(1)でないと駄目。受託開発で先方から開発の依頼だけ
を受けて「MySQLを使うソフト」の所有権が初めから
客にある場合は(1)でも(2)でも構わない。
現実的には(2)で開発側が代理購入するかな。
|客がMySQLのライセンスをすでに持っていたら、
|2重にライセンス料を払わずに済むということになる。
客先から機材提供という形で借り受けて、開発〜納品つう流れの
パターンはやったことあるな。MySQLライセンスは数まとめて
買うとディスカウントされるから、余分に持ってたみたい。
0672NAME IS NULL
04/07/27 07:04ID:???なるほど。
> MySQLライセンスは数まとめて買うとディスカウントされる
それは知りませんでした。
お手数をおかけしました。
レスもらえて良かったです。
ありがとうございました!
0673NAME IS NULL
04/07/27 09:41ID:kYeSX4AM2004-07-24T09:00:00+09:00の形式で日時を取得する方法はありますか?
知っている方がいたらヒントでも良いので下さい。
宜しくお願いします。
0674NAME IS NULL
04/07/27 09:54ID:Xykl8dEFその日付フォーマットは RDFのDC:DATEかな?
select DATE_FORMAT(now(), '%Y-%m-%dT%H:%i:%S+9:00') as dc_date;
でどうでしょう。
0675NAME IS NULL
04/07/27 10:59ID:kYeSX4AMレス、ありがとうございます。
>RDFのDC:DATEかな?
まさしくです。
やっぱり'+9:00'は固定になりますか。
どうにかtimezoneを拾って、その値から+9:00というのを導き出せないでしょうか?
0676656
04/07/27 11:18ID:???質問に答えてくださった方ありがとうございます。
再利用しない方向でいこうと思いますが、
auto_incrementで桁数の最大値まできてしまった場合エラーになってしまうと思いますが、
最大値までいきそうなデータ登録数の場合、みなさんどうされてますか?
0677しろねこ
04/07/27 11:45ID:La92ZJBm重複する値で分け、カウントしてそのフォームに出力するにはどうしたらよいですか。
(例)
テーブル:レコードA , レコードB , レコードC, レコードA, レコードB
フォーム:A 2
B 2
C 1
0678NAME IS NULL
04/07/27 12:54ID:???ありえない。intがおよそ+-21億まで、bigintがおよそ+-922京まであるんだぞ……足りない事はまずない。
データ登録数が異常。テーブル設計がおかしいんじゃないか。
0679NAME IS NULL
04/07/27 13:04ID:???IDが足りません。
どういう風にすれば良いですか?
0680NAME IS NULL
04/07/27 14:54ID:???0681NAME IS NULL
04/07/27 16:53ID:???0682NAME IS NULL
04/07/27 17:22ID:???0683NAME IS NULL
04/07/27 20:56ID:???よくわからんけど、ID二つ作れば?
0684NAME IS NULL
04/07/27 22:34ID:???何のデータなのか激しく気になる
0685NAME IS NULL
04/07/27 22:49ID:???星を数えてます。
0686NAME IS NULL
04/07/27 23:29ID:2OjAMHehUNIX DB使え、
0687NAME IS NULL
04/07/27 23:30ID:???0688MAME IS NULL
04/07/28 03:45ID:???0689NAME IS NULL
04/07/28 05:24ID:???ttp://www.jfps.tpc.edu.tw/~yoyo/New23/002p/1129p01.jpg
0690NAME IS NULL
04/07/28 09:06ID:???0691NAME IS NULL
04/07/28 09:30ID:???MySQLをサーバーにして、Excelをクライアントにして
データベースを管理することは可能なんでしょうか。
データの出し入れをExcelから完全に行うデータベース
をつくりたいと思っています。その場合、VBAのコードに
SQLのコードを埋めこむことになるんでしょうか。
0692NAME IS NULL
04/07/28 09:30ID:???0693691
04/07/28 09:31ID:???http://pc5.2ch.net/test/read.cgi/db/1057041973
のスレのほうに書くべきだったかもしれません。
0694691
04/07/28 09:38ID:???ちなみに、MySQLとExcel、MySQL Connector/ODBCはインストール済みです。
0695NAME IS NULL
04/07/28 10:06ID:R5oCkYgA質問させていただきます。
MySQL4.1をWindows2000上で使おうと思っているのですが、MySQLにはOracleでいう
SQLローダーに相当する機能はあるのでしょうか。大量のデータをバッチ的に書き込む
必要があるので、いちいちプログラム中からINSERT文を発行していると、通信の
オーバーヘッドが大きくて実行速度が大幅に低下してしまいます。この手のローダー
について、ご紹介をお願いします。
0696690
04/07/28 10:29ID:???自分に対するレスでいいのかな?
そのときフィールド型って何にすればいいの?
てか、どうやってinsert発行すんだろ・・・・
マニュアル読むべきですか?
0697NAME IS NULL
04/07/28 10:38ID:???ヒント:blob プレースホルダ
0698NAME IS NULL
04/07/28 10:48ID:???データサイズが1.33倍になってしまうのが悩みです。
画像に限らずなんでも入るから楽です
0699NAME IS NULL
04/07/28 12:28ID:CX0BAnfi0700690
04/07/28 13:19ID:???勉強不足のようだ・・・・。
まずそこから調べて、実際に画像つっこんでみます。
0701NAME IS NULL
04/07/28 15:28ID:???伝説のルチャドール、エル・バンコランのフィニッシュホールドだよ。
0703NAME IS NULL
04/07/28 23:07ID:???4.9.9 mysqlimport(テキストファイルからのデータのインポート)
http://dev.mysql.com/doc/mysql/ja/mysqlimport.html
#こういうツールが無いDBが有れば教えて欲スイ。
0704MAME IS NULL
04/07/29 00:28ID:???僕はMySQLにDLLを通して接続しているので、
ODBCは知りませんが、VBAでSQLをグリグリかいてます。
0705NAME IS NULL
04/07/29 04:20ID:???phpのバージョンは4.3.7です。
portsから入れるとデータベース類が/var/db/mysql/以下に保存されるのですが、
これを後から別の場所に変更する事は出来ないのでしょうか?
例えばWindowsにインストールした場合は、winmysqladmin.exe等でmy.iniの該当箇所を
修正すれば、保存ディレクトリの場所を変更できますよね。
FreeBSDでも、このmy.iniのような設定ファイルで変更出来ないものでしょうか・・・。
0706NAME IS NULL
04/07/29 05:36ID:itaSUHVKいちいちunsignedしてますか?
何となく気持ち悪いので俺はしてるんですが
面倒くさくもあります。
0707NAME IS NULL
04/07/29 08:57ID:???0709NAME IS NULL
04/07/29 15:08ID:???MYSQLにインポートしてるんですけど、
『001』とかのデータが『1』になってしまいます。
『001』のままインポートしたいのですが、
対処方ご存知の方いらっしゃいますか?
0710709
04/07/29 15:40ID:???すいません。板汚しです。
0711NAME IS NULL
04/07/29 16:06ID:???FreeBSDでもいっしょ。
今あるディレクトリごとコピー(権限データベースも含む)して、
コピー先ディレクトリの権限を設定して、my.cnf(my.iniじゃないよ)を
書き換えて、mysqldをリブート。
0712705
04/07/30 01:53ID:???ありがとうございます。
自分でも調べた結果、portsで自動生成される起動スクリプト、
/usr/local/etc/rc.d/mysql-server.sh
にデータディレクトリの指定がありました。
こちらの方が簡単だったたのでそれを修正して再起動、無事完了しました。
ご丁寧にありがとうございました。
0713NAME IS NULL
04/08/01 01:00ID:VMF5hDfxテーブル名、カラム名に日本語を使っても問題ないでしょうか?
0714NAME IS NULL
04/08/01 04:20ID:???仕様上絶対必要なら止めはしないが。
0715NAME IS NULL
04/08/01 09:21ID:???単に分かりやすいかなぁという程度なのでやめときます。
0716NAME IS NULL
04/08/01 09:51ID:???その程度のことなら、まあ遊びで作ってるDBに使ってるけど問題はない。
標準/社外のツールとか対応してないのが結構あるから、気をつけたまえ。
0717NAME IS NULL
04/08/02 06:54ID:lTW+BMPt画面出力を制御したいのですが、どうすればよいでしょうか?
>大量のデータを出力するクエリがある場合、画面上でデータが一気に
>スクロールアップするのを見るのではなく、出力をページ表示コマン
>ドに渡して 1 ページ単位で表示させることができる。
> shell> mysql < batch-file | more
調べた範囲だと上のしか見つからなかったYo(´・ω・`)
0718NAME IS NULL
04/08/03 02:11ID:???http://dev.mysql.com/doc/mysql/ja/mysql.html
Keyword:--pager[=...] オプション, pager, nopager
0720NAME IS NULL
04/08/05 22:52ID:???0721NAME IS NULL
04/08/05 23:37ID:???ExcelってODBCとかでの、DBの接続機能は標準で持ってるん?
あれば出来る。
アドオンとかVBA組んでやれば出来るか?ってことなら
やれば出来る。
0722NAME IS NULL
04/08/06 11:23ID:???一番最適な方法を教えて下さい。
CSVにエクスポートしてインポートするのがやはり最適ですか?
0723NAME IS NULL
04/08/06 12:11ID:???お答えくださってどうも有難うございます。
エクセルにはデータベースクエリを設定するツールがあるようで、
Microsoft Queryをインストールすれば可能であるようにも思えます。
実際にそれでエクセルをクライアントにしてデータベース・システム
を構築している方がいらっしゃるのかどうか知りたくて質問しました。
0724NAME IS NULL
04/08/06 13:44ID:tJn9qtchもうちょっとどうしたいか具体的に書いてくれ。
そのカキコだとそれでも良いんじゃない?としか答えられない。
0725NAME IS NULL
04/08/06 14:32ID:???使ったこと無いけど普通に出来そうな予感。
http://www.atmarkit.co.jp/fwin2k/win2ktips/296exceldb/exceldb.html
MySQL ABからWindowsのMyODBCドライバ取ってきてドライバの設定して、
Windowsのデータソース(ODBC)にデータソースとドライバの登録設定して、
Microsoft Queryをインストール&設定で繋がる予感。
まんまだとエンコードはSJISで統一かな。
0726NAME IS NULL
04/08/06 14:40ID:???SoftAgencyにいくとEUC対応版のMyODBCあるよ
0727NAME IS NULL
04/08/06 17:57ID:???いや、あれだとバイナリデータも変換されちゃうんで用途によっては不適かなと。
あと、多分MySQLサーバもクライアントもWindowsじゃないかと想像したんで。
0728NAME IS NULL
04/08/06 18:06ID:???0729NAME IS NULL
04/08/06 18:16ID:???0730NAME IS NULL
04/08/07 01:05ID:???ディレクトリごとrsyncで投げちゃうのが一番楽
0731NAME IS NULL
04/08/07 02:46ID:b3We31b9macにうまくインストールできない。
大体本なさすぎ。
mac
BSDUNIXのくせして冷遇されすぎ。
とりあえずEXELファイルダウンロードされるけど
クリックしても動かん。
どうすりゃいいのーーーー(泣
0732NAME IS NULL
04/08/07 03:01ID:b3We31b9もっとツールあればなあ。gui のmysql control centerてwindowsしかないんだよね。
appleで全面的にサポートして欲しい。oracleに対抗できるぐらいに
appleが支援すれば凄いことになると思う。
ていうかそのときはサーバーがmac osx一色になるかも。
0733NAME IS NULL
04/08/07 03:41ID:???0734NAME IS NULL
04/08/07 05:17ID:???CCはWindowsだけじゃなかったと思うけど。
まあバイナリ依存症みたいだし、
http://www.navicat.jp/product/system.html
を買えば?
0735NAME IS NULL
04/08/07 09:23ID:???ps aux
などとしてみると
なぜかmysqldが複数個(5つくらい)
動いています。
こういうものなのでしょうか?
httpdからmysqlに要求があるたびに
クローンプロセスを起動するように
なっているのでしょうか?
0736NAME IS NULL
04/08/07 13:50ID:???あちきん家はFC2なんだけど、
--skip-locking とかいうのが沢山動いてますね
今まで気づかなかった(笑)
0737NAME IS NULL
04/08/07 14:19ID:???safe_mysqldとmysqldが両方動いてる・・。
0738NAME IS NULL
04/08/07 14:40ID:???そういうもの。
複数のプロセスが起動しているように見えるけど、実際には単一プロセス内で複数のスレッドが
走っている。
http://www.mysql.gr.jp/mysqlml/mysql/msg/5639
ちなみに、接続ごとに新規スレッドが生成される。
http://dev.mysql.com/doc/mysql/ja/MySQL_threads.html
>>737
safe_mysqld(4.0以降はmysqld_safe)はmysqldを起動するためのシェルスクリプトなので、
それで問題なし。
0739NAME IS NULL
04/08/07 15:03ID:???cygwinのbash上(コマンドプロンプト上)で
mysql -h localhost -u user -p
とやるとちゃんと
Enter Password:
が返ってくるのですが別のコンソールrxvtを使うとEnter Passwordが返ってきません。
ためしにパスワードをなしにしてmysqlとやってもmysqlからの反応は返ってきません。
どんな原因が考えられるでしょうか?アドバイスお願いします。
0740739
04/08/07 16:02ID:???ttp://www.mail-archive.com/[email protected]/msg11242.html
にrxvtはバッファして画面上に吐き出さないからって書いてありました。
でも解決法が載ってない・・・知ってたらアドバイスください。
0741NAME IS NULL
04/08/07 16:19ID:???|MySQLCC uses Trolltech's Qt toolkit, which means it can run on Microsoft Windows
|and Unix environments, and we plan on support Mac OS X in future versions.
なんてあったんで、Qt/Macじゃ動かんのか...やっぱり諦めなはれ
0742NAME IS NULL
04/08/07 16:39ID:???なるほど・・
安心しました。
ありがとうございました
0743NAME IS NULL
04/08/07 20:30ID:???rxvt以外でも、cygterm + Tera Term Proとかでも同様になるね(Cygwin DLL 1.5.9-1で確認)。
>>740のスレッドにあるように、mysql.exeが古いCygwinのライブラリをリンクしているのが原因
ぽい。
ソース持ってきてCygwin上でビルドしなおすか、同一窓で起動するのはあきらめて
$ cmd /c start mysql.exe
とかするしかないかも。
0744NAME IS NULL
04/08/08 02:19ID:???lock tableして、flushしろよ。
っていうか、DB一度落とすのが一番。
0746NAME IS NULL
04/08/09 09:59ID:???文字列型のvarcharとtinytextは文字として格納するか、バイナリで格納するかの違いみたいですが
どのような場合にバイナリで格納するべきなんでしょうか?
1、test-kit*alph-base
2、テストはきっとうまくいくはず(euc-jp)
1と2はなんのデータ型を選択するといいでしょうか?
0747NAME IS NULL
04/08/09 12:10ID:lJMnYZ/Gセキュリティに関しての疑問です。
use mysql;
select user,host,password from user;
で現在は
root | localhost | hogehoge
root | % | hogehoge
の二つだけなのですが、何故かそれ以外のユーザでも接続ができてしまいます。
例えば
C:\mysql\bin> mysql -u root -p hogehoge
で接続ができるのは理解できますが、
C:\mysql\bin> mysql
だけでも何故か接続できてしかも何でもできてしまいます。
匿名ユーザ等はちゃんと消してあるし、なによりパスワードなしで接続できる意味がわかりません。
どうかエロイ人おながいします。
0748746
04/08/09 12:42ID:???char binary
と
char
をテストしてるんですが、差が感じられません。日本語を入れる時にはあまり関係ないものなんですか?
0749NAME IS NULL
04/08/09 17:35ID:???id smallint(5) not null zerofill
);
ひとつのカラムにnot nullとzerofillの両方のオプションをつけることができないのでしょうか?
今はmysql manualを読んでます。
0750NAME IS NULL
04/08/09 20:47ID:???zerofill を指定する順番が違うだけです。
create table test (
id smallint(5) zerofill not null
);
0751NAME IS NULL
04/08/10 03:41ID:???my.iniあたりにクライアントで優先的に使うユーザとパスワードを記述してない?
あと権限テーブルの読み込みをスキップさせてるとか。
それと直接データベースのテーブルの中身を弄って、ユーザを変更した場合は
flushしないと駄目だよ。まあmysqldのリブートでもしてれば別だけど。
0752747
04/08/10 07:16ID:???basedir=C:/mysql
datadir=C:/mysql/data
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=a
password=0000
>>751
これがmy.iniの中身です。
ユーザは一番初めにrootで接続して
root | localhost | hogehoge
root | % | hogehoge
以外は消去しました。それからはrootのパスワードありで接続してデータベースつくったり
テーブル作ったりして遊んでます。全部コマンドプロンプトからの作業です。
mysqladminはインストールしたときに一度起動させただけでスタートアップには登録してませんし
まったく使ってません。
テーブルを作ってもそれに権限の設定をしたりは全くしてません。というかrootユーザしかいませんし;
0753NAME IS NULL
04/08/10 07:54ID:???もしかしてないんでしょうか?英語の方はあるので一応なんとなくは理解できるんですが;
0754NAME IS NULL
04/08/10 07:56ID:???http://dev.mysql.com/doc/mysql/ja/GRANT.html
0755NAME IS NULL
04/08/10 08:58ID:???ありがとうございます
0756NAME IS NULL
04/08/10 10:00ID:/StcJr8nLOAD DATA INFILEはレコードを挿入するのに使えるみたいですが、
できればプロンプトト上と同じ事をファイルに書いてレンタルサーバで一発で
データベース、テーブル〜ユーザ権限の設定までを済ませれたら便利だなと思います。
不可能でしょうか?
0757747
04/08/10 12:12ID:???その後知らないうちに匿名ユーザははじかれるようになってました。
てっきりPCの再起動さえすれば、mysqldも再起動しるのかと思ってたましたがちゃんと
直接mysqlデータベースをいじった場合にはちゃんとflush発行しないといけないんですね。
どうもです!
0758NAME IS NULL
04/08/10 12:54ID:???GRANT SELECT ON mydb.test to hoge IDENTIFIED BY 'hoge';
でユーザhogeパスワードhoge権限mydb.testテーブルにSELECT構文を使えるように設定しました。
そのユーザを消すには
DROP USER hoge;(4.1以前のサーバですのでこれは使えません)
REVOKE GRANT OPTION ON mydb.test FROM hoge;
で権限を削除してからmysql.userからレコードを直接削除しろとMySQLマニュアルに書いてあるんですが
REVOKE発行後(userは消さずに)にmysql.talbes_privを見てみるとhogeに対する権限が残ってました。
試しにhogeで接続してみると何故か権限が以前と同じままで、SELECTの発行ができてしまいました。???
どういうことでしょうか?一応FLUSH PRIVILEGESは発行してから確認しました。
0759NAME IS NULL
04/08/10 13:11ID:???>REVOKE GRANT OPTION ON mydb.test FROM hoge;
指定が足りない。
REVOKE SELECT,GRANT OPTION ON mydb.test FROM hoge;
ちゃんとpriv_typeを指定しる。まあがんがれや
0760759
04/08/10 13:16ID:???っていうかgrant optionなんてpriv_typeないじゃないか!
どっから持ってきたんだよその語句は。
REVOKE SELECT ON mydb.test FROM hoge;
だな。
0761758
04/08/10 18:46ID:???ありがとうございました!なんか勘違いしてしまってました;
ところで
GRANT priv_type on *.* to user_name WITH GRANT OPTION;
のWITH GRANT OPTIONってグラント構文を発行できる権限ですよね?
どうしてpriv_typeでできないで、最後に付ける形なのでしょうか?
0762756
04/08/11 09:59ID:O6NiGJVB0763NAME IS NULL
04/08/11 10:17ID:???もともと書き込みの少ない板/スレなんで回答は気長に待とう。
で>>756だけど、mysqlコマンドを使えば簡単にできる。
http://dev.mysql.com/doc/mysql/ja/mysql.html
0764NAME IS NULL
04/08/11 13:19ID:r3tt2I52負荷的にはどうでしょうか?
何となく、負荷が大きいような気がして
MySQLにはファイル名だけを入れておいて、
画像はファイルとして持っておこうかとも考えています。
ただ利便性からはMySQLに入れてしまった方が
便利だとは思います。
UNIXのファイルシステムとさして負荷が変わらないなら
MySQLに入れてしまいたいのですが。
実際どうなのでしょうか。
0765NAME IS NULL
04/08/11 13:36ID:TUan7ePThttp://dev.mysql.com/で
ダウンロードするインストールつきファイルは
excel起動方式らしいのですが、起動途中でとまります。
(インストーラなしはダウンロードできるのですがインストール方法が
わかりません。)
mysql友の会みると mysqlのpkgがあるらしいのですが
どこで入手すればよいのでしょうか」?
WINDOWS版はとりあえずうまくいってますが
どうしてもMACでMYSQLを動かしたいのでよろしくお願いします。
MACのFILEMAKERは汎用度が低いので今1か今2です。
MACを使ってWEBのデータべースを考えています。
お願いします。
0766NAME IS NULL
04/08/11 18:40ID:???コマンドプロンプトからrootで接続して
exit
と打ったらmysqlがエラーで終ってしまいましたが、禁句なのですか?
本当は
quit
exit
で接続切ってからcmdを閉じたかったんですが間違えてしまったのです。
0767NAME IS NULL
04/08/11 18:46ID:???画像ファイルへのアクセス形態による。
・多種大量アクセスならファイル形式だとOSのリソースを消費するためDB有利(負荷はシステム全体に掛かる
・少種大量アクセスならOSのファイルキャッシュに期待する
・少種少量アクセスならDBの管理利便性をとる
小さな画像はDBで大きな画像はファイル名参照といったシステムも考えられる。メンドウだが効果はある。
Webサーバーでは蓄積する画像は大量だがアクセスされるのは最新の画像だけだったりする。
ファイル>DB、DB>ファイルの変換も簡単だから
まずはDBに全部入れてみたら? 画像の参照集計・履歴とかも取れるし。
負荷については使用に応じた設計をすればDBの方がOSより少ないよ。
0768NAME IS NULL
04/08/12 03:34ID:sFQeQqK+ぁぁ
結局MACOSX については
誰も助けてくれないわけね。。。
0769MAME IS NULL
04/08/12 04:20ID:???公式サイトに、インストーラー付きのディスクイメージ置いてあると思いますが?
0770NAME IS NULL
04/08/12 05:01ID:???公式マニュアルはインストール方法も説明しています。
まずマニュアルを読んでください。
ディスクイメージ(.dmg)をダブルクリックしてもマウントされるだけで、
その中にあるpkgをダブルクリックしないとインストーラが起動しません。
MySQL Manual
http://dev.mysql.com/doc/mysql/ja/
2.1.3 Mac OS X への MySQL のインストール
http://dev.mysql.com/doc/mysql/ja/Mac_OS_X_installation.html
>>769
インストーラー付きのディスクイメージをダウンロードして
ダブルクリックして「起動途中でとまります」と言っているのでしょう。
0771NAME IS NULL
04/08/12 09:59ID:???>>765
「excel起動方式」ってなんですか?
0772756
04/08/12 10:16ID:???昨日そのページを見たんですが見つかりませんでしたorz
で、今日もう一度見てみたら左側に
「4.9.5 mysqlbinlog(バイナリログからクエリを実行する)」
の項を見つけれました。ありがとうございます。
0773NAME IS NULL
04/08/12 12:35ID:o1vLsNEcを解凍して
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
ってやったけど、
Fatal error: Can't open privilege tables: Can't find file:
'./mysql/host.frm' (errno: 13)
だってさ(´・ω・`)
mysql_install_db
でも実行すればいいの?
0774NAME IS NULL
04/08/12 12:39ID:Kph4YncSINSERT tbl_name SET colum_name = "文字列";
みたいな時に「文字列」をEUCで挿入するとかってできませんか?
0775NAME IS NULL
04/08/12 13:18ID:sFQeQqK+>>769
>>770
ども。(;;)
公式サイトにインストーラつきのディスクイメージのがおいてない。
わけわからない、ファイルがおちてきてうんともすんともうごかない。
でpkgさがしてきました。ヴァージョン旧いのが鬱(泣) なんだけど。。。
http://www.cosmos.ne.jp/〜kaz6120/maclib/mysql/index.pl?id=mysql01
どっちにしろむずい。
unixつかいこなしてないとしんどい。
WINDOWSより難しい。ていうか本欲しいなあ。MAC用MYSQL。
買いてもお金にならないせいだろうけど
誰かWINDOWSと一緒に欠いていないかなあ。セットアップ方法。
随分MYSQL関係お金つぎこんでんだけど、MACの記述まずないんだよね(大泣)
0776NAME IS NULL
04/08/12 13:35ID:???ttp://dev.mysql.com/downloads/mysql/4.0.html
ここにおいてあるどれでうまく行かないの?
10.1以前だったらソースコンパイルしか無い。
書いてあることを読むとそれは無理そうだけど・・・
>unixつかいこなしてないとしんどい。
としたらインストールはうまくいってもその後でも苦労するかもね
0777774
04/08/12 13:53ID:Kph4YncS共用サーバなので、自宅のテスト環境で可能でもだめでした。
なので質問を変えさせてください。
通常perlやphpからmysqlにレコードを挿入、取り出しするときにはEUCではなく
Shift_JISで挿入するんでしょうか?EUC等で入れてしまうとコマンドやシェルからは
レコードの中身を見たときに
文字バケしてしまうんですが、それを回避する方法は共用サバではありませんよね?
0778756
04/08/12 15:09ID:???C:\mysql\bin>mysql -u root -p mydb < hoge.sql
hoge.sqlをc:\mysql\bin以外に置いても相対パスで指定できるんですが
それだと少し面倒なので絶対パスでも指定できるといいんですが、無理でしょうか?
一応
C:\mysql\bin>mysql -u root -p mydb < C:\Program Files\Apache Group\Apache\htdocs\public_html\cgi-bin\query.sql
みたいにして試したんですけど、
指定されたファイルが見つかりません。
っていうエラーが出ます。ちゃんとファイルはパスのところに置いてあるんですが、どういうことなのでしょうか?
0779NAME IS NULL
04/08/12 15:30ID:???よくわからんが普通はperl or phpで作っとくもんだよ。その方が便利だしな。
特にレンタルサーバなんかでは多分みんなそんな感じでやってるよ。
0780NAME IS NULL
04/08/12 17:03ID:???パスに空白が含まれてるからじゃない?
二重引用符「"」でパスをくくればいけると思う。
0781756
04/08/12 17:14ID:???あ〜。思いつきませんでした;助かります。
>>780
できました!これでどこに置いてあるファイルでも好きに読みこめるようになりました^^
0782NAME IS NULL
04/08/12 20:31ID:???簡単なクラブ所属表のデータベースをMySQLで作っているのですが、
+------------+-------------+
| name | club |
+------------+-------------+
| 木下 | baseball |
| 斉藤 | baseball |
| 佐藤 | soccer |
| 鈴木 | soccer |
| 山田 | volleyball |
| 山本 | volleyball |
+------------+-------------+
このようなデータベースでsql文「〜 Where club = baseball」と検索すると
「木下」「斉藤」が検索されると思います。
ここからが質問なんですが、仮に「斉藤」が幽霊部員化しているので、
上記のsql文で「斉藤」を検索から除外させるという場合にはどうすればいいのでしょうか?
またクラブに復帰するかも知れないので、データベースからの削除や「baseball」という
club名も変えないでこのままの状態で、という仮定です。
0783NAME IS NULL
04/08/12 20:44ID:???正規化しなきゃだめだよその表。
0784NAME IS NULL
04/08/12 20:48ID:???0785NAME IS NULL
04/08/12 20:49ID:???生徒テーブル
no name
1 木下
2 斎藤
・・・
クラブテーブル
id club
1 baseball
2 soccer
・・・
所属テーブル
no id active
1 1 1
2 1 0
・・・
(斎藤が野球が幽霊部員の場合)
みたいな表にする。selectはjoinして適当に。
0786NAME IS NULL
04/08/12 20:50ID:???>>783の言う通り
幽霊部員対策は幽霊フラグのカラムかな?
ってことで、こんな感じでどう?
クラブのテーブル
club_id | club_name
1 | baseball
2 | soccer
3 | volleyball
所属のテーブル
name | club | ghost
木下 | 1 | 0
斉藤 | 1 | 0
佐藤 | 2 | 0
鈴木 | 2 | 1
山田 | 3 | 1
山本 | 3 | 0
0787NAME IS NULL
04/08/12 20:51ID:???0788NAME IS NULL
04/08/12 21:10ID:???このままだと同姓同名がいると削除不可能なテーブルとか作っちゃうよ。
あるいはExcel使いなさい。
0789782
04/08/12 21:33ID:???今回の件では複数のclubに所属という事は考えず、
あくまで名前とクラブが1:1という仮定です。
なるほど、activeやghostみたく、
新しいフィールドで設定すれば良いわけですね。
どうもありがとうございました。感謝です。
ちなみに私は教師じゃないですよw
MySQLの勉強としての事例だったのです。紛らわしくてスイマセン。
0790NAME IS NULL
04/08/12 22:18ID:???も苦じゃないはずだけどなぁ。どうしてもインストールがわからん
かったら、Server版(収録されているのは4.0.18)を買うというのも
選択肢じゃねーかと思うぞ。
0791NAME IS NULL
04/08/12 22:56ID:sFQeQqK+OSX server版いつかかいたいとも思うけど
これををMYSQLのために買うというのも???
SYBASEでも無料でついているなら買う価値あるだろうけど。
MYSQLって小規模・中規模対応でしょう?
金融なんかでMYSQLが将来使われるという可能性あるんでしょうか?
クラスタリング対応するようになったのは凄いけど。
まだまだORACLE とかSQL SERVERには敵わないという印象。
ただMYSQL は面白い。ただだし。もっとGUIの管理マネージャーとかどんどん
つけて欲しいな。コマンドは辛いです。UNIXの人はコマンド好きなんですか?
SQLやWEBやるときにプログラム書くのは面白いけど
データベースの管理でいちいちコマンド打ち込むのは正直あほらしい。
0792NAME IS NULL
04/08/12 23:01ID:???ezweb のメールのユーザ管理や配送制御に使っているみたいだよ。
0793NAME IS NULL
04/08/13 03:30ID:???>わけわからない、ファイルがおちてきてうんともすんともうごかない。
「わけわからないファイル」じゃなくてファイル名を書いてください。
国内ミラーサイトのダウンロードページと
インストーラつきのディスクイメージに直リンクします。
MySQL 4.0 Downloads
http://www.softagency.co.jp/MySQL/downloads/mysql/4.0.html
Installer package (Mac OS X v10.2) Standard
http://www.softagency.co.jp/MySQL/Downloads/MySQL-4.0/mysql-standard-4.0.20-apple-darwin6.8-powerpc.dmg
Installer package (Mac OS X v10.3) Standard
http://www.softagency.co.jp/MySQL/Downloads/MySQL-4.0/mysql-standard-4.0.20-apple-darwin7.3.0-powerpc.dmg
0794NAME IS NULL
04/08/13 04:57ID:96XAZt6iMYSQLで管理していると聞いてる。
まあYAHOOで使いまくりなら、MYSQL はやぱ凄いと思う。
0796NAME IS NULL
04/08/13 09:15ID:???なんで
select * from hoge whre club="baseball" && name ne "斉藤";
っていうレスが一個もつかないんだ?785-6のレスが薬立つだろ請けどさ。
まあ将来的に考えれば
0797NAME IS NULL
04/08/13 09:57ID:???と思って調べようとしたらトップページから直リンクしてた。
MySQL ABの顧客企業ってことかな?
ttp://www.mysql.com/customers/
0798NAME IS NULL
04/08/13 10:41ID:???俺もヘボながら今後も支持するよ
0799NAME IS NULL
04/08/13 10:50ID:vEuYSWkhTINYINT(M)
範囲-128〜127
SMALLINT(M)
範囲-32768〜32767
(M)は数値型の桁数を表わすみたいですが、範囲というのはその桁数の範囲ということでしょうか?
でも(M)の最大はどんな型でも255ですよね?そうなると範囲との互換性がないというか、よく理解できません。
初めはTINYINTの範囲は-128〜127なので符号なしで4桁、ありで3桁なのかと思ってましたが、
ためしに
CREATE TABLE test(
id TINYINT(5) ZEROFILL
);
とすると何故かエラーがでないですし。
INSERT INTO TEST SET id="1";
とすると中身は
00001
になってますのでやはり範囲と(M)での桁指定の意味がわかりません。
どなたかおながいします。
0800NAME IS NULL
04/08/13 11:15ID:???(M)が桁数だったのか初めて知りました
いやぁ、ほんと夏ですね
ところでINSERTの「TEST」だけ何で大文字なんだ?
0801NAME IS NULL
04/08/13 11:55ID:???0802NAME IS NULL
04/08/13 16:57ID:???夏にしては、なかなかやるな。
0803NAME IS NULL
04/08/13 17:08ID:???普通にインデックスを張った項目だけ、
WHERE条件にしても、order by するとパフォーマンスが悪いです。
解決のためには、やっぱりテーブル分割しかないでしょうか?
select * from テーブル where style='1' order by point desc limit 0,20;
style & point はインデックス張ってあります。
0804803
04/08/13 17:10ID:???1度目は9秒ぐらい。
2度目は(キャッシュにのるからでしょうが)1.5秒ぐらい。
0805803
04/08/13 17:15ID:???1度目は1.5秒ぐらい。
2度目は(キャッシュにのるからでしょうが)0.25秒ぐらい。
これなら許容範囲。
0806NAME IS NULL
04/08/13 17:33ID:???「INDEX(style, point)」で作ってたとすると
「ORDER BY point」はインデックスきかなんじゃなかったっけ?
そこんとこどうよ
0807803
04/08/13 18:04ID:???色々調べました…
逆に個別にインデックスを張っているとダメみたいです。
style, point で複合インデックスを張ったら早くなりました。
ところでここでは styleみたいな項目が6個と
pointみたいな並べ変え項目が2個あるんです。
12個のインデックスになっちゃうけど、
特に問題ないですかね??
0808NAME IS NULL
04/08/13 19:12ID:???データがでかくなるの以外は問題ないです。
しかし100万件ぐらいどうってことないけどなあ。
メモリ足りないんじゃないの?
あるいはメモリをちゃんとキーバッファにわりふってないとか。
0809803
04/08/13 19:36ID:???>>808
複合でインデックスを張っていなかったために、
Using filesort
になってました。
これが原因だと思うのですが、
それにしても遅すぎますか?
0810799
04/08/13 19:54ID:vEuYSWkh最大表示サイズですか?どちらにしてもよくわからないんですがorz
範囲と最大表示サイズの関係をエロイ方、バカな僕に教えてください。おながいしますm(__)m
0811NAME IS NULL
04/08/13 21:26ID:???基礎がなってないって言ってるでしょ
なんで調べないの?
ただの釣りか、そうに違いない!!
0812799
04/08/13 21:42ID:vEuYSWkhMySQLmanualは読んでますが;
ご存知でしたらおながいします。
0813NAME IS NULL
04/08/13 23:03ID:96XAZt6i気が遠くなるほど時間かかりそう。
BSD UNIXの道は遠い。
でもいいんだ。どーせバークレー大学なんてでてないし。
文系だし。(泣
0814NAME IS NULL
04/08/16 10:32ID:SQ2cXbupmysqldump -all all.dmp で採ったデータベースを
他のマシンに mysql < all.dmpで戻しました。
use データベースとか、普通のテーブルへの
アクセスはOKなのですが、管理テーブルへアクセス出来ません。
ユーザとかも作成できるけど、select * from user;は、
dosen't existとか言われてます。
何で? mysqlacessもダメ
0815NAME IS NULL
04/08/16 18:05ID:???お前バカだな
0816NAME IS NULL
04/08/17 11:16ID:bWPr69Sc'use mysql' can be first time.
0817NAME IS NULL
04/08/17 13:57ID:???mysqlのDBいじった場合は、flushしないといけないんでは?
mysqladminか、もしくはコマンドラインでもあったかな?
まぁ、マニュアルよんでみそ
0818NAME IS NULL
04/08/17 14:35ID:???select count(*) で 1.8secだよ。
0819NAME IS NULL
04/08/17 21:54ID:ph0AxtK/文字列の'NULL'に置き換えようと思い、
select ifnull(*,'NULL') from TableName;
としたのですが、エラーになってしまいました。
ifnullは*と併用しては使えないのでしょうか?
全ての列のNULLチェックをしたいのですが
どうしたらいいでしょうか?
どうかよろしくお願いいたします。
0820NAME IS NULL
04/08/17 23:02ID:???と言う香具師に限って設計が駄目だったり、
しょぼいハードウェア使ってたりするんで、ちゃんと見直してみろ。
つか頻繁に使うのは結構キャッシュ内で収まってたりするからな...
0821NAME IS NULL
04/08/17 23:33ID:???フィールド情報の
int(1)てのは、1桁の整数型、ですよね?
1桁ってなってるはずなのにINT型最大の2147483647まで挿入できるんですが・・・
0822NAME IS NULL
04/08/18 00:44ID:???int 一個分
intってのは結構でかいよ〜
昔は秒数えたら半世紀ちょっとで終わってたけど
今はなんつーか、宇宙レベルだよ
0823NAME IS NULL
04/08/18 00:55ID:???あらかじめ素人なのをお断りしておきます。
ググって見たところ、
MySQLでは、int(n)の「(n)」は、精度=桁数ではないようだ。
#つーか、このあたりって実は実装依存なの?
ttp://www.softagency.co.jp/mysql/Manual/4.1.1/html-split/manual_6.html#SEC403
6.2 カラム型
(略)
M 最大表示サイズを表す。正式な最大表示サイズは 255。
(略)
INT[(M)] [UNSIGNED] [ZEROFILL]
通常サイズの整数。符号付きの範囲は -2147483648 〜 2147483647。符号なしの範囲は 0 〜 4294967295。
「表示」サイズ、ね。
hoge INT(3)
でhoge=1を入れたら「001」になる、ってことか?
ひと桁の数値、にしたかったら、標準SQLのDECIMAL(1,0)を使うんでないかな。
0824NAME IS NULL
04/08/18 01:29ID:???どうもありがとうございました。
0825NAME IS NULL
04/08/18 11:14ID:???>
「表示」サイズ、ね。
hoge INT(3)
でhoge=1を入れたら「001」になる、ってことか?
それじゃ最小表示サイズぽくないか?なんか中途半端な感じだよな。スパっとした説明ってないよね。
0826NAME IS NULL
04/08/18 11:22ID:???なので通常は、型を指定するだけ十分。
tinyint、midiumint、int、bigintなどなど
一度、MY*ファイルをバイナリエディタとかで覗くと、値がどのように
格納されているかが良く分かります。
0827NAME IS NULL
04/08/18 11:28ID:???Bool代わりに使いたいんだが
0828NAME IS NULL
04/08/18 11:32ID:???一応BOOLあるよ
といってもTINYINTだけど
0829NAME IS NULL
04/08/18 11:39ID:???あれでMySQLの管理やっちゃだめですか?
0830NAME IS NULL
04/08/18 11:52ID:???同じなんだし
0831NAME IS NULL
04/08/18 12:40ID:???それとも両方あってるの?
0832NAME IS NULL
04/08/18 13:21ID:???お願いがあるのですが、InnoDBで100万件程度のデータを作成して
select count(*) from tablename;
してみてもらえませんか?
もう、設計うんぬんの話じゃないような気がするのです。
# 1レコードは1,200byteぐらいかな?
ハードウェアは確かにヘボイけど。
Pentium4 1.6
RAM 512MB
MyISAMだと100分の1秒の世界。
InnoDBだと2秒近く。
0833NAME IS NULL
04/08/18 14:14ID:???そんな君には、これだ。
ttp://www.innodb.com/todo.php
Long term:
Fast COUNT(*) from a table.
0834anonymous
04/08/18 14:25ID:6zToUUIAmysql を sparc solaris 2.6 にインストールを考えています。
使用する用途は、Blog movable typeを動かすために必要であるからです。
www.sunfreeware.com
からは Sparc Solaris 2.6 の
mysql-3.23.53-sol26-sparc-local.gz
しか落とせません。
しかし本家では、http://dev.mysql.com/downloads/mysql/4.0.html
Solaris 8 (SPARC) Standard 4.0.20 11.0M Download |
が落とせます。
さて、これはSolaris2.6で使用できるのでしょうか?
0835anonymous
04/08/18 14:50ID:6zToUUIAhttp://mirrors.sunsite.dk/mysql/doc/mysql/en/Solaris_2.7.html
によりますと、
2.6.3.1 Solaris 2.7/2.8 Notes
Normally, you can use a Solaris 2.6 binary on Solaris 2.7 and 2.8.
Most of the Solaris 2.6 issues also apply for Solaris 2.7 and 2.8.
大抵,Solaris 2.7 または、2.8で上で Solaris 2.6用に作成されたバイナリファイルを
を使う事ができる。Solaris 2.6で起こりうる大抵の問題は、 Solaris 2.6 と 2.8
で起こりうる事である。
ここでは2.8のバイナリを2.6に適用する事ができるのかどうかは判別できません。
0836NAME IS NULL
04/08/18 15:44ID:???ありがとうございます。
どうやら周知の事実だということですね・・・。
0837NAME IS NULL
04/08/18 16:00ID:???「食い違ってる」と読み間違ってる喪前がアフォ。
http://dev.mysql.com/doc/mysql/ja/Numeric_types.html
0838NAME IS NULL
04/08/18 16:15ID:???お前の言葉でもっとわかりやすく説明しろよ。822のどこが正しいのかわからんな。
0839NAME IS NULL
04/08/18 16:16ID:???0840NAME IS NULL
04/08/18 16:57ID:???0841NAME IS NULL
04/08/18 18:42ID:???お前837だろ?
0842819
04/08/18 18:59ID:wS03NeRRいろいろやってみたのですが無理でした・・・orz
せめてselect * from TableNameで返ってきた結果を
スカラーにする方法でもあれば・・・
0843NAME IS NULL
04/08/18 21:50ID:???0844NAME IS NULL
04/08/18 23:29ID:???宇宙レベルのどこが悪い
0845NAME IS NULL
04/08/18 23:36ID:???0846申し訳ないです。
04/08/18 23:43ID:9YX8lYZ0もしかしたら、ふざけるなと怒られるかもしれませんが当方まじめに悩んでいます。
お力をお貸しください。
設定で、my.cnfをいじろうとマニュアルを読んだのですが、
my.cnfに書くことができる設定が多すぎるのと、
パラメータと、設定できる範囲、推奨値等を検索しながらmy.cnfをいじっていたのですが、
マニュアルだと、MyISAM, DBD, InnoDB, sqld, セキュリティとパラメータがべつべつの場所に
記載されているのと、グループもどんなグループが利用できるのかもわからず
どつぼにはまってしまいました。
my.cnfの
システム全体に利用するパラメータ, パラメータの説明, 設定範囲, 推奨値、
グループごとに利用できるパラメータ, パラメータの説明, 設定範囲, 推奨値の
一覧てどこかに無いでしょうか?
環境は
MySQL: 4.0.20
OS: RedHatLinux9.0
言語:PHP4.0
です。
駄文長文申し訳ありませんがよろしくご指導ください。
0847NAME IS NULL
04/08/18 23:58ID:???http://dev.mysql.com/doc/mysql/ja/Option_files.html
http://dev.mysql.com/doc/mysql/ja/MySQL_Optimisation.html
http://dev.mysql.com/doc/mysql/ja/Server_parameters.html
http://www.rfs.jp/server/mysql/01/05.html
http://tsuttayo.sytes.net/mysql/setting/
http://allabout.co.jp/career/database/closeup/CU20040722A/
0848NAME IS NULL
04/08/19 01:01ID:???mysqladmin -uroot -p create test1
でデータベースtest1を作成後、rootでmysqlに接続し、
GRANT ALL PRIVILEGES ON test1.* TO testsql IDENTIFIED BY 'testsql';
にてユーザtestsqlを作成後、
mysql -utestsql -ptestsql test1
で接続しようとすると、
ERROR 1045: Access denied for user: 'test1@localhost' (Using password: YES)
と表示され、接続できません。
flush PRIVILEGESを行ったりしたのですが、何が原因なのかさっぱり分かりません。
どなたかご教授くださいm(__)m
0849NAME IS NULL
04/08/19 01:11ID:ggkag9vEさっそくのレスありがとうございます。
そのあたりのページは一通り見ました、
また、mysqld --helpコマンドもたたいたのですが、
mysqldに関しては一覧が出てくるものの、
clientやmysqlその他のグループについては一覧の記述が無くて
困っています。自分で一覧を造ろうと2、3日悪戦苦闘したのですが、
点在しているのをつなぎ合わせているうちにぼつぼにはまりました。
まだ、気長に造ってはいますが、できれば総合的に網羅している書籍ですとか、
HPなどを教えていただければと思います。
よろしくお願いします。
0850NAME IS NULL
04/08/19 09:56ID:???mysql localhost unix ソケット tcp
あたりでググってみ
0851anonymous
04/08/19 16:00ID:PtZByeIpを落としてきてSolaris2.6上の
mysql-max-4.0.20-sun-solaris2.8-sparc
ディレクトリで
#make
とすると、
# make
make: *** No targets. Stop.
となります。
# ./configureとすると、
NOTE: This is a MySQL binary distribution. It's ready to run, you don't
need to configure it!
To help you a bit, I am now going to create the needed MySQL databases
and start the MySQL server for you. If you run into any trouble, please
consult the MySQL manual, that you can find in the Docs directory.
ld.so.1: ./bin/my_print_defaults: fatal: librt.so.1: open failed: No such file or directory
Neither host 'keeper' and 'localhost' could not be looked up with
./bin/resolveip
Please configure the 'hostname' command to return a correct hostname.
If you want to solve this at a later stage, restart this script with
the --force option
さてどうすればいいでしょうか?
アドバイスお願いでありまする。
0852NAME IS NULL
04/08/19 16:20ID:???クイズ番組みたいな言い方だな
問題なのか質問なのか量りかねる。
>アドバイスお願いでありまする。
とかるのでアドバイスをば・・・
何でもいいからまずその英語を読め。
0853NAME IS NULL
04/08/19 21:55ID:???1. バッチ処理で裏テーブル作成
2. 表と裏を取り替える
ということをやろうとしてます。
【問1】
LOCK TABLES 〜 UNLOCK TABLES を使っても、
テーブル自体が(一瞬)無くなるんで、
テーブル無しのエラーが出そうな気がするんですが、
LOCKしてれば、MySQLは止めてくれるんでしょうか?
【問2】
RENAME TABLE構文があるので、これを使うべきな気がしますが、
> 名前の変更は原子的に実行されます。つまり、テーブル名が変更されている間、
> 他のスレッドからはこれらのテーブルのいずれにもアクセスできなくなります。
# 原子的って何だ?
と、書いてあるのは適切なロックをするということなんでしょうか?
適切なロックはしないということなんでしょうか?
0854NAME IS NULL
04/08/19 23:50ID:???表tableをtruncateして、裏tableを表にinsert into .. select *
で突っ込むのがいいんじゃないかと思う。
0855NAME IS NULL
04/08/20 00:02ID:???># 原子的って何だ?
"アトミック"が校正の時のチェックで漏れてんだな、多分。
0856NAME IS NULL
04/08/20 02:44ID:???0857NAME IS NULL
04/08/20 19:49ID:fiQF3m93クライアントが考えています。
MySQLで開発した場合はMySQL作成元にお金を取られますか?
0858NAME IS NULL
04/08/20 23:39ID:???MySQL.comを見てくださいね
0859NAME IS NULL
04/08/21 05:08ID:5JbYmkjyこれだからMYSQLユーザーは(TY
0860NAME IS NULL
04/08/21 11:15ID:???どういう意味?
0861NAME IS NULL
04/08/21 20:02ID:vE5DBXiB0862NAME IS NULL
04/08/22 14:15ID:???英語ぐらい読めよ。まったく。
0863NAME IS NULL
04/08/22 16:30ID:???ソフトのライセンスを読まないのは致命的。
汎用的なライセンスじゃなけりゃ、怖い内容が
書いてあるとも限らんのにな。
0864NAME IS NULL
04/08/23 09:14ID:???問題ないよ。mySQLは無料。
0865NAME IS NULL
04/08/23 12:49ID:6gmnvASgライセンス違反
そのサイトを他社に売った時のみ
0866NAME IS NULL
04/08/23 15:59ID:???0867NAME IS NULL
04/08/24 02:40ID:???PHPでMySQLを扱ってみようと考えています。
782で複数のクラブに所属している場合を考えた時、
個々のクラブから所属する生徒情報を、
個々の生徒から所属しているクラブ情報を読み書きする場合は、
どういった風にやればいいんでしょうか?
クラブテーブル
+------------+-------------+
| id | club | no
+------------+-------------+
| a | baseball | 01 02 03
| b | soccer | 02
| c | volleyball | 02 03
+------------+-------------+
生徒テーブル
+------------+-------------+
| no | name | id
+------------+-------------+
| 01 | 佐藤 | a
| 02 | 鈴木 | a b c
| 03 | 山田 | a c
+------------+-------------+
上記で考えた場合、
フィールドには1つの値しか持てないのでしょうか?
(↑正確な質問ではないかもしれません)
また、もし、そうならば、こういった場合は
(1)クラブテーブルのidが「a」のnoは「01」「02」「03」ではなく、
「01 02 03」と持ち、それを抜き出してPHPの配列に入れて操作する
(2)関連付けられるnoが増えることにカラムをno01、no02、、、と増やしていく
(3)noの最大数だけnoカラムを持ち、noが増えることにクラブテーブルのnoカラムを増やしていく
この3件しか考えられませんでした。
どれも適当とは思えないのでどうすればいいか、正しいDBの考え方を教えてください。
もともとphpだけで作ろうと思っていて、DBの知識はないんですが、
レンタルサーバーがMySQL使えるので、これを機に勉強してみようと思い立った次第です。
実際に扱うデータは、上の例でいくとクラブが1000程度、生徒が300程度で、
クラブテーブル、生徒テーブルに関連付けられる生徒数、クラブ数は一定ではありません。
DBに関する基本的な知識がごっそりと抜けているために分からないのだと思うんですが、
マニュアルやテンプレサイトを見てもどうも解決できませんでした。
よろしくお願いします。
0868NAME IS NULL
04/08/24 04:04ID:???>>782のテーブルは、RDB的には、>>786の言うように
生徒テーブル(no:primary key)
no name
1 木下
2 斎藤
・・・
クラブテーブル(id:primary key)
id club
1 baseball
2 soccer
・・・
所属テーブル((no,id):primary key)
no id active
1 1 1
1 2 1
2 1 0
3 3 0
・・・
というのが正しいと思うよ。カラムが横に増えていくのはRDBの書き方じゃないです。
縦に伸びていくのが正しいDBです。
上の場合、例えばbaseballに属している人のリストは、
select b.name from 所属テーブル a left join 生徒テーブル b on a.no=b.no where a.id=1;
で出てくる(はず)。
0869NAME IS NULL
04/08/25 02:38ID:???0870NAME IS NULL
04/08/25 16:32ID:???868のレスで
所属テーブル((no,id):primary key)
no id active
1 1 1
1 2 1
2 1 0
3 3 0
とありますが、これをidでソートした場合、
昇順なら『ORDER BY id ASC』、降順なら『ORDER BY id DESC』となりますよね。
これをランダムにしたい場合にはどうすれば良いのでしょうか?
単に『ORDER BY RAND()』とすると、全てがランダムになってしまいます。
昇順だと「111222333555・・・」で、降順だと「・・・9997775553332211」と並びますが、
これをランダムに「55522222444111333」や「88844455511112222」のように、
同じidはまとまってランダムに表示させたいのです。
こういうのはどうすれば良いのですか?
ちなみに『ORDER BY id RAND()』だとエラーでした。
0871NAME IS NULL
04/08/25 21:38ID:???0873NAME IS NULL
04/08/25 23:10ID:???create temporal table IDS(id int,r float);
insert into IDS select id,rand() from 所属テーブル group by id;
select a.id from 所属テーブル a left join ids b on a.id=b.id order by b.r;
drop table ids;
手元にMySQLないのでクエリは試してないですが流れはこんな感じかと。
table IDSの作り方は他にもいろいろあると思います。
0874NAME IS NULL
04/08/26 14:52ID:???これって 1 も含まれるんでしょうか。ぐぐってもどうもはっきりしなかったので…
一応、バージョンは4.0.20ってことで。
0876NAME IS NULL
04/08/26 18:11ID:???0を含むが1を含まない。 0 <= x < 1。MySQLはC言語で作られているのでそのまんま。
0878NAME IS NULL
04/08/28 22:13ID:Kvo5XL7fどなたか対処法ご存じないでしょうか?
環境としてはMacOSX10.3上でMySQL4.1.3を使用してます。
送ったSQLは以下の通り。
alter table データベースA add foreign key (データベースAのフィールド) references pud (参照するINDEX) on delete cascade on update cascade;
それで帰ってきたエラー文が以下の通り。
ERROR 1005 (HY000): Can't create table './archweb/#sql-13c_2a.frm' (errno: 150)
errno:150って何なのかが解りません。
どなたか・・・。
0879NAME IS NULL
04/08/29 00:27ID:45ZSdcfDありますか?InnoDB(デフォルト)かMyISAMかどちらか
調べたいのですが、describeでは出てきませんでした。
0880NAME IS NULL
04/08/29 01:29ID:???> errno:150って何なのかが解りません。
そういうときにはperror。
$ perror 150
MySQL error: 150 = Foreign key constraint is incorrectly formed
それから↓も参照。
http://dev.mysql.com/doc/mysql/ja/InnoDB_foreign_key_constraints.html
> 同様に、ALTER TABLE が失敗して errno 150 が示された場合は、変更されたテーブルに
> 対して外部キー定義が誤って作成されています。バージョン 4.0.13 より、SHOW INNODB
> STATUS を使用して、サーバで最後に発生した InnoDB 外部キーエラーの詳細な説明を
>参照できるようになりました。
>>879
SHOW CREATE TABLE tbl_name;
http://dev.mysql.com/doc/mysql/ja/SHOW_CREATE_TABLE.html
0882NAME IS NULL
04/08/29 09:33ID:???Shift_JISの"東十条"という漢字を
文字化けさせずにINSERTするにはどうすればよいのでしょうか?
あまりに基本的な質問でもうしわけありません
0883882
04/08/29 09:34ID:???Shift_JISのままDBに格納したいのです
0884NAME IS NULL
04/08/29 09:58ID:???DBの設定をSJISにする。
「default-character-set=sjis」でググる。
INSERTしてるクライアント側もSJISで吐くように
ちゃんと設定しているかどうかも確認。
# どんなクライアント使ってるかは知らないが。
0885844
04/08/29 10:00ID:???0886882
04/08/29 10:02ID:???早レスありがとうございます!
ただ、使ってるMySQLがレン鯖なのでiniファイルを弄れません_| ̄|○
クライアント側はShift_JISのHTMLフォームからShift_JISでコーディングされたPHPで
キャッチしています。
なんとかdefault-character-setがEUC_JPのままでShift_JISのデータを格納できないでしょうか。。。
0887NAME IS NULL
04/08/29 10:05ID:???DB板のスレでこれほど短時間に数レス付くとは
日曜だからなのか
0888NAME IS NULL
04/08/29 11:17ID:???つうことは接続クライアントライブラリの方も弄れないってことか。
としたらMySQL3.x及び4.0なら、アプリ側で何とかするしかないね。
DBへのIN/OUTのところで、mbstring関数なりを使って
Shift_JISとEUC-JPの変換処理を噛ませる。
Shift_JISはコード上、素直(というと語弊があるか)な作りじゃないから
簡単にそのまんま入れるのは無理。PHPのクオートの自動エスケープ
というの手もあるし、それを薦めちゃってることもあるのだが
処理として不十分。
0889NAME IS NULL
04/08/29 12:57ID:???今回は大丈夫かもしれないけど、
いつか辻褄を合わせられなくなるでしょう。
最終的にはdefault-character-set=sjis
する方法しか残っていません。
なぜEUCじゃダメなのか?
こだわる必要があるか?も考えてみましょう。
0890NAME IS NULL
04/08/29 17:00ID:???それを言ったらUTF-8はどうなる
0891NAME IS NULL
04/08/29 17:32ID:???MySQLでは、表示ががたがたになるところですかね。
あと、文字数とバイト数に関係がないところ。
大体、これで企画と製作の間に意思の相違が。
SJISが優れてるのは、
文字幅とバイト数に関係があるところ!笑
0892NAME IS NULL
04/08/29 20:11ID:45ZSdcfD日本語を入力できない(変換後エンターを押すと消える)
のですが、ビルドオプションか何か設定が足りないので
しょうか?標準入力から読ませるのはうまく動きます。
ちなみにターミナル自体は日本語を入力できます。
% あいう
mysqlを起動した後の
mysql>
の状態で入らなくなります.
0893892
04/08/29 20:16ID:???mysql> set names ujis;
mysql> select * from [table] where [column] = '[日本語]';
(この日本語の部分がエンター後消える)
% mysql << EOT
> set names ujis;
> select * from [table] where [column] = '[日本語]';
> EOT
はOK.
0894878
04/08/29 20:42ID:N+E8Duig遅くなってすみません。
これからやってみます。
ありがとうございました
0895882
04/08/29 23:20ID:???mbstringモジュールはインストールされているみたいですので
>>888さんの処理で対処してみようとおもいます。
ところでmbstringは100%綺麗に変換できるんでしょうか?
例えば、”この文字を含んでいると化ける”とかそういうバグ?みたいなものはないのでしょうか?
0896NAME IS NULL
04/08/29 23:31ID:???auto を使わなきゃ問題ない
0897NAME IS NULL
04/08/29 23:45ID:???マッピングされてる文字なら問題ないよ。
良くShift_JISにない、MSなSJISな文字を化けるとか言い出す香具師がいるがね。
あとHTTPのGET/POST/COOKIEあたりで入出力が完結してるのなら
PHPのHTTPのIn/Outに対する自動コード変換機能を使うって手もあるな。
まあ何にせよ、その辺はMySQLというよりPHPの話だ。
0900NAME IS NULL
04/08/31 17:12ID:BBi/9PTBmysqlDBを。。とか。
0901NAME IS NULL
04/08/31 18:37ID:???phpMyAdmin2.5.7-pl1の設定で行き詰っています。
Shift_JISでphpMyAdminからエクスポートしたいのですが
output_buffering = On
output_handler = mb_output_handler
mbstring.detect_order auto
mbstring.encoding_translation On
mbstring.func_overload 0
mbstring.http_input UTF-8,SJIS,EUC-JP
mbstring.http_output SJIS
mbstring.internal_encoding EUC-JP
mbstring.language Japanese
mbstring.script_encoding auto
mbstring.substitute_character no value
の設定で「ファイルに落とす」「gzipされる」で実行しても
圧縮された中身はEUC-JPになり、またSQLでShift_JISで書かれたテキストファイル
を読み込もうとしてもエラーが出てしまいます。
どうすればShift_JISが使えるようになるでしょうか
0902NAME IS NULL
04/08/31 23:34ID:???MySQLの話じゃなくてPHPの質問だわな。
phpMyAdminは良く知らないけど、「エクスポート」機能に関しては
php.iniのエンコーディング設定で行うんじゃなく(意味が無いから)て
phpMyAdminに出力設定で行うんじゃないかな。あるとすれば。
ファイルでのSQLの入力も同様。php.iniのエンコーディング設定で
関わってくるのはHTTPでの入出力であって、DBやファイルI/Oなどは
自前でエンコーディング変換を行ってやらないと駄目だからね。
# PHPのスレに質問するなら、PHPとPHPで動くアプリ(phpMyAdmin)
# と言う観点でもうちっと詳細に環境を説明しないと、多分突っ込まれるよ。
0903892
04/09/01 00:48ID:???直し方でなくて、俺んとこじゃ動いてる
というのでも、そもそもマルチバイト
実装されてるかまだかだけ分かるだけで
十分です。
0904NAME IS NULL
04/09/01 09:53ID:???phpinfo() の結果を貼り付けて。
0905NAME IS NULL
04/09/01 10:15ID:???readlineの問題だと思う。
~/.inputrcに
set input-meta on
set output-meta on
set convert-meta off
と書くとか、configure時にシステムのreadlineを使うよう指定すればいいんじゃないかな。
0906NAME IS NULL
04/09/01 12:01ID:???0908NAME IS NULL
04/09/02 11:45ID:FDBaFuaYCREATE TABLE `words` (
`id` INT(10),
`word` CHAR(100),
PRIMARY (`id`,`word`)
);
(データが10,173行)
CREATE TABLE `tab` (
`id` INT(10),
`taba` INT(10),
`ts` TIMESTAMP,
KEY `ts` (`ts`),
PRIMARY (`id`)
);
(データが1,634行)
みたいなテーブルがあります。
SELECT tab.*
FROM tab,words`
WHERE tab.id=words.id
AND word='りんご'
GROUP BY tab.id
ORDER BY tab.ts DESC;
とやると9秒かかってしまいます。
SELECT id FROM words WHERE word='りんご'
とした結果を保存して(PHPなんで内部変数に保存)
SELECT * FROM tab WHERE id IN ( さっきの結果 ) ORDER BY tab.ts DESC;
とすると3秒です。
早いほうを1行のクエリでかけると、PHPとかインターフェースとか通さずにすむんで、もっと早そうな気がするんですが、どうやって書くんでしょうか?
0909NAME IS NULL
04/09/02 20:42ID:???0910NAME IS NULL
04/09/02 21:44ID:???JOIN〜 JOIN〜 JOIN JO〜〜I〜〜〜N〜〜
0911NAME IS NULL
04/09/03 11:41ID:VK13PyJPselect *
from hoge
left join (select id,sum(price) from auau) as tbl on
hoge.id = tbl.id
というSQLはNG?
回避策ってあります?
0912NAME IS NULL
04/09/03 12:47ID:???where句で使うカラムと、order byで使うカラムは、
複合でindex貼らないとたぶんダメ。
ってか、ひとまず
クエリーの先頭に explain をつけて実行した結果を貼って。
0913NAME IS NULL
04/09/03 14:42ID:???PostgreSQL なら template1 に接続して select version(); ですが、
その MySQL 版を知りたいのです。
0914NAME IS NULL
04/09/03 15:35ID:???SELECT VERSION();
0915NAME IS NULL
04/09/03 22:19ID:???かかってる秒数を見るに、tabとwordsの積が作られているような気が。
その後で word=? が実行されてるんじゃなかろうかと。
……EXPLAINの結果が見たいのは同意。
0916NAME IS NULL
04/09/03 22:20ID:???temporary tableを作るのはだめ?
0917NAME IS NULL
04/09/05 23:24ID:hb0Cr7N1使ってる人いる?
0918NAME IS NULL
04/09/07 10:27ID:/gZ/pCEfMySQLで簡単な住所録を作ったのですが、名前順にソートさせることができません。
テーブル hoge
ID name kana address tel
0 山田太郎 ヤマダ タロウ 東京都特許許可局 03-xxxx-xxxx
1 名無し吾郎 ナナシ ゴロウ 神奈川県湘南の海 045-xxx-xxxx
みたいなテーブルで、
SELECT * FROM hoge ORDER BY kana でやっても正しい50音順になりません。
このような場合はどうすれば良いでしょうか?お願いいたします。
0919NAME IS NULL
04/09/07 14:20ID:???取り合えず[テーブルに指定してる/MySQLサーバ]の文字コードが適正かチェック。
0920NAME IS NULL
04/09/07 15:24ID:hCs48S/Dselectの場合に時間がかかるならインデックスを作成することで対応すると思いますが、
insertなどの場合はどのようにしたら速くなるのでしょうか?
0921NAME IS NULL
04/09/07 15:49ID:???インデックスをなくす。
0922NAME IS NULL
04/09/07 16:38ID:hCs48S/Dああ。そうか。インデックスを無くせばいいんだ。
ありがとうございます。
でもそしたらselectが遅くなりますね。
でもそれしか方法はないか(>_<)
0923NAME IS NULL
04/09/07 16:45ID:???100万件でインデックスも色々貼ってるInnoDBでも1秒もかからなかったよ。
0924NAME IS NULL
04/09/07 19:02ID:???binary指定する。
0925NAME IS NULL
04/09/08 00:26ID:h24j4m6Bそうなんですか。1秒かからないんだ。
使ってるマシンはそんなに非力じゃないのにな(>_<)。celeron2G、mem512M。非力?
何が悪いんだろう?
0926867
04/09/08 04:43ID:???2週間もレスが遅れてしまってすみません、そして回答ありがとうございます。
カラムが横ではなく縦に伸びていく云々というのが、非常に勉強になりました。
その所属テーブルを使うやり方でやってみようと思います。
0927NAME IS NULL
04/09/08 04:49ID:???連続してたくさん追加したい時は追加前にインデックスを消して、
まとまった追加が終わってから貼り直す。
0928NAME IS NULL
04/09/08 04:53ID:???多分テーブル設計が果てしなく腐ってる
どんなテーブルなのか晒せ。話はそれからだ
0929NAME IS NULL
04/09/08 16:56ID:86JnOwfEActivePerl-5.8.4.810-MSWin32-x86.msi(モジュールにはDBI、DBD-MYSQLを使用)
windows2000sp4
を使って、perlからmysqlに接続しようとして
$dsn="DBI:$sql{'driver'}:$sql{'database'}:$sql{'host'}";
$db = DBI->connect($dsn, $sql{'user'}, $sql{'passwd'});
とやってみたのですが
failed: Client does not support authentication protocol
requested by server; consider upgrading MySQL client
と出てしまいます。
色々調べると
http://66.102.7.104/search?q=cache:K0QqJeUSSmYJ:dev.mysql.com/doc/mysql/ja/Old_client.html+authentication+protocol%E3%80%80mysql&hl=ja&lr=lang_ja
と書いているのですが
mysqld --old-passwords
mysql --old-passwords
この二つで起動させてみて試しても結果は同じです。
ここは確認したのか?などのアドバイスいただけると幸いです。
よろしくお願いします。
0930NAME IS NULL
04/09/08 17:01ID:???0931NAME IS NULL
04/09/08 17:09ID:???答え書いてあんじゃん。
mysqld --old-passwords
した上でパスワード再設定しなきゃいけないんじゃないの?
環境がないからテストできないけどどうよ>>929
0932NAME IS NULL
04/09/08 17:18ID:???0933929
04/09/08 17:38ID:???・・・私の見落としでした。本当につまらないことでお手間お掛けしましてすいませんでした。
接続成功しました。
ガンマにしたのはどうしても副問合わせ機能が欲しかったからです。
0934NAME IS NULL
04/09/09 19:03ID:rmFC/2yUdescで構成を見て手で打つしかないでしょうか?
0935NAME IS NULL
04/09/09 19:07ID:???CREATE TABLE new_tbl SELECT * FROM orig_tbl;
もしくは
CREATE TABLE new_tbl LIKE orig_tbl;
http://dev.mysql.com/doc/mysql/ja/CREATE_TABLE.html
0936NAME IS NULL
04/09/09 19:26ID:7IZplDLOえ?副問合わせついたの?いつから?
0937NAME IS NULL
04/09/09 19:45ID:???4.1.0から
0938NAME IS NULL
04/09/09 20:39ID:???が使えないバージョンでテーブル内のデータをコピーしたくないなら、
CREATE TABLE new_tbl SELECT * FROM orig_tbl WHERE 1=0;
という手もあるっぽい。
0939NAME IS NULL
04/09/10 00:07ID:???時間の無駄だけど
0940NAME IS NULL
04/09/10 10:15ID:5SZ4GfUzありがとうございます。
LIKEが使えず(MySQL3)、where 1=0 を使ってやる方法で行おうと思います。
ありがとうございます。
それにしても、where 1=0 というのはさすがに思い浮かばないですね(+_+)
勉強になりました。
0941NAME IS NULL
04/09/10 13:13ID:57HZlsAkmysqlサービスが開始していることを確認して、
\mysql\binで、mysqladmin create databaseとやっても
ローカルホストにつなげないというエラーがでてしまいます。
いろいろなページを検索しても、インストールの次にwinmysqladminを使うページや
使わないページなどがあり、混乱しています。
何がいけないのでしょうか?ご教授いただけたら幸いです。
0942NAME IS NULL
04/09/10 13:34ID:N09ASFq1データ件数を減らしても、ファイルサイズは減らないようです。
稼動したまま、このデータファイル(ibdata1)のサイズを、
減らすことは可能でしょうか?
可能な場合、その方法を教えてください。
マニュアルの該当ページでもいいです。
よろしくお願いします。
0943NAME IS NULL
04/09/10 16:04:46ID:???aaaっていうdatabaseを作るとき、
> mysqladmin -u ユーザー名 -p create aaa
PASS: *******
でいいはず。
ログインしてから、
mysql> create database aaa;
でもいいが。
0944NAME IS NULL
04/09/10 16:42:50ID:???>ローカルホストにつなげないというエラーがでてしまいます。
自分で要約しないでコピペを貼りましょう
FAQクサいのでそうすればすぐに答えが出そうでふ
0945NAME IS NULL
04/09/10 17:30:54ID:???InnoDBはそういうもんだ。InnoDBのサイトとか
MySQL的なこと(ファイルサイズの縮小等)なら
書籍「実践MySQL4」のメンテナンス関係なども参照。
0946NAME IS NULL
04/09/12 02:45:15ID:???4.1を業務で使っている方はいらっしゃいませんか?現在の安定度は
どうでしょうか?
実は、4.1をやや大規模なシステムに採用することを検討しています。
サブクエリが使えるので4.0よりSQLが書きやすくなり、また(必要な場合)
他のDBへの移行もしやすくなると考えたのです。システムが完成するまで
には正式版がリリースされるのではないかとも思っています。
4.1について、皆さんはどのようにお考えでしょうか?どうかお教え下さい。
0947NAME IS NULL
04/09/12 09:13:35ID:???md5.cでsyntax error出まくってmake失敗。シクシク。
0948NAME IS NULL
04/09/12 21:07:55ID:???いいんじゃないですか。
4.1から変わっている部分が多いので(文字エンコディングの扱いとか、パスワードとか)
今から新規に使うのなら4.1.xにしておいたほうが良いかもしれない。
(4.0.xからの移行は、MySQLの割にはちょっと面倒だし)
0949NAME IS NULL
04/09/12 22:07:27ID:???WinXP SP1にインストールしようとしたら
「ファイル C:\mysql-4.0.16-win\SETUP.EXE(または必要なファイル)が見つかりません。
パス及びファイル名が正しいか、必要なライブラリがすべて使用可能かどうか、確認してください」
というメッセージが出ました。
ファイル、パスは正しいのですが、
必要なライブラリとはどういうことですか?
0950946
04/09/12 22:12:22ID:4+n+nB7Wありがとうございます。逆に言えば、4.0で構築したシステムの4.1への移行は
なかなか困難なのですね。
実は、すでに部分的に4.0で構築を始めてしまっています。それらは4.1では
そのままでは動かないのですね…。
既存のコードが動くことを取るか、今後の開発効率を取るか、悩ましいところ
です。
0952NAME IS NULL
04/09/13 00:11:58ID:???いいんじゃない?4.0で。自分としては市場での
4.0→4.1への移行は結構掛かると思ってる。
接続ライブラリの互換性の問題で。
0953NAME IS NULL
04/09/13 11:25:23ID:fbc7TE9Hありがとうございます。
私はサブクエリに馴染んでいるので、できるなら4.1を使いたかったのですが、
接続などに問題があるのですね。うーん。
しかし、パフォーマンスをあげるためにヒープに一時テーブルを作ったりしたら
他のDBとの互換性がまったくなくなるからなあ…。
接続部分をどこか一箇所でまとめて定義しているアプリケーションなら、
4.0 -> 4.1 への移行は比較的容易に行えないでしょうか?
0954NAME IS NULL
04/09/13 11:46:48ID:???MySQLのGUI管理クライアント(MySQL CCとかかねやんとか)で
Unicodeに対応したものはありますでしょうか?
Navicatが対応していますが、フリーウェアでは無いでしょうか?
0955NAME IS NULL
04/09/13 12:41:52ID:???他のDBとの互換性を考えている時点で、
もう4.1の接続性なんて問題は関係ないのでは?
0956NAME IS NULL
04/09/13 12:46:07ID:???互換性を問題にしている以上、4.1の接続性なんてのは小さな問題だよね。
どっちに主眼があるわけ、互換性と接続性。
それによって4.0でやるか、4.1でやるか決まるんじゃないの。
0957NAME IS NULL
04/09/13 13:59:20ID:fbc7TE9Hありがとうございます。
私自身は互換性を重視していますが、プロジェクトのメンバ全体では意思の統一は
なされていません。引き続き検討します。
いろいろありがとうございました。
0958952
04/09/13 17:09:00ID:???関わってくるってだけで、自分ところのことだけ考えれば良いような
(MySQL C/Sの範囲で)閉じたシステムならば、さくっとライブラリを
対応するものに置換すれば良いだけです。下位互換性は残ってますし、
問題になることは少ないでしょう。
0959946
04/09/13 20:35:54ID:???ありがとうございます。
おかげさまで 4.1 の推進の決意が固まりました。
部内でも 4.1 を試験的に導入することで、意見がまとまりました。
お世話になりました。
0960270
04/09/13 21:22:05ID:???MySQL の 4.0 系と 4.1 系を 1台のマシンで共存させられるのでしょうか?
サーバOS は Windows2000 です。
0961946
04/09/13 21:22:57ID:???0962NAME IS NULL
04/09/13 21:52:27ID:???クライアントはそんなに気にしなくても大丈夫、な気がする。
少なくとも、古いクライアントから繋げない、ということはなかったんじゃないかな?(未確認)
ただ、パスワードの形式が変わっているので、その辺りは気をつけないといけないけど。
(old-passwdを使わないといけない)
テーブルについては、charとかvarcharの扱いが変わったので、
(バイト数じゃなくて文字数になった)
そのあたりにどの程度依存してるかによる。
日本語はtextで長さを気にせずつっこむよ、というコードばかりなら
(僕はそういうのが多い)
あまり困らない、かも。
0963NAME IS NULL
04/09/13 21:53:16ID:???配置ディレクトリとポート番号を変えれば不可能じゃない。
ただし、
1. 設定ファイル(my.ini, my.cnf)は共有されるので、4.0と4.1で起動オプションを変えたい
場合にはプロセス起動時にコマンドラインオプションを指定する必要がある
2. Windowsのサービスとして登録した場合にサービス名(MySql)が重複するので、片方を
レジストリいじって変更するか、サービスとして登録しない(別の方法で起動する)ようにする
3. クライアントからの接続時、(標準でない方は)ポート番号を明示的に指定する必要がある
てな感じで結構面倒なので、素直に複数のマシンに分けたほうがいいと思う。
0964963
04/09/13 21:55:19ID:???>>963
> 1. 設定ファイル(my.ini, my.cnf)は共有されるので、4.0と4.1で起動オプションを変えたい
> 場合にはプロセス起動時にコマンドラインオプションを指定する必要がある
my.ini (my.cnf)に [mysqld-4.0] みたいなセクション名を指定すれば、1つの設定ファイルで
それぞれのオプションを指定可能だった。
0965NAME IS NULL
04/09/13 22:07:42ID:???インストーラでぶちこんだ場合は無理。手動で入れれば可能。
マニュアルの「複数のMySQLを動かす」云々の項目を参照。
勿論DBを共通に使える訳ではありませんよ。
0967946
04/09/13 22:12:02ID:???すみません、リロードし忘れました。
http://dev.mysql.com/doc/mysql/ja/Multiple_servers.html
これですね。ありがとうございました。
0968NAME IS NULL
04/09/14 08:32:17ID:???REVOKE ALLではGRANT権限の剥奪はできませんが、
GRANT OPTIONは
REVOKE ALL, GRANT ON …
のように、列挙できないのでしょうか。
0969NAME IS NULL
04/09/14 09:30:43ID:???4.1.2以降ならそんな感じで全権限を剥奪可能。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
4.1.2より前のバージョンでは、ALLとGRANT OPTIONの2回に分けてREVOKEする必要がある。
REVOKE ALL PRIVILEGES ON *.* FROM user [, user] ...
REVOKE GRANT OPTION ON *.* FROM user [, user] ...
http://dev.mysql.com/doc/mysql/en/GRANT.html
0971NAME IS NULL
04/09/15 01:53:29ID:c6myJgX5テーブル名に日本語使ってたら見事に全部化けるようになりました。
しかたないのでmysqldumpしたヤツからデータベース作り直したのですが
テーブル名がやはり一部化けます。(「者」という字が化けるみたい)
4.0から4.1のところでエンコーディングの設定の仕方が変わったのでしょうか?
0972NAME IS NULL
04/09/15 05:52:38ID:SsTXT8DJhttp://dev.mysql.com/doc/mysql/ja/GRANT.html
>注意: GRANT コマンドでデータベース名を指定する際、`_' および `%' ワイルドカードを使用できます。
>データベース名の一部として、たとえば `_' 文字を使用したい場合、GRANT コマンドでは
> GRANT ... ON `foo\_bar`.* TO ... などのように、`\_' として指定するようしてください。
>そうしないと、ワイルドカードパターンに一致する別のデータベースにもユーザがアクセスできるようになります。
とありますが、foo_barデータベースに対してtestuserに権限を与えるため
GRANT SELECT ON 'foo\_bar'.* TO testuser@localhost;
を発行したところ、下記のエラーとなります
You have an error in your SQL syntax.
Check the manual that corresponds to your MySQL server version
for the right syntax to use near ''foo\_bar'.* TO testuser@localhost' at line 1
何が原因でしょうか
MySQLのバージョンは4.0.2です
基本的な質問で申し訳ありません
0973972
04/09/15 05:59:00ID:???' ではなく ` で括るんですね
お恥ずかしい・・・
0974NAME IS NULL
04/09/15 19:04:40ID:???サイズ変更するにはどうすれば・・・・。
getimageでWarning発生・・・。
DBに縦横サイズ格納してない場合です。
0975974
04/09/15 19:44:39ID:???0976971
04/09/15 23:23:20ID:c6myJgX54.1からテーブル名もutfでつけるようになったんですね。
テーブル名=ファイル名なんでutfでつくろうとするけどWindows側のファイル名はsjis。
無理やりutfでファイルを作るんで一部の文字が化けるみたいです。
カラム名はともかくとしてテーブル名に日本語使うのはやっぱりやめたほうがいいようですね。
0977NAME IS NULL
04/09/16 01:38:43ID:???個人的には「テーブル名=ファイル名」の部分の作りはオカシイと思うけどね。
日本語や文字コードがどうのこうのじゃなくて、ファイルシステムの
制限がテーブル名に影響するって点がね。UnixとWinでの大文字小文字違い然り。
0979NAME IS NULL
04/09/16 09:48:05ID:b2eo1p8i1発目のアクセスがかなり遅いです(数十万レコードのテーブル)。
2回目はメモリ上にあるのか、通常どおり爆速です。
しかし、相当時間ほっとくとメモリから消えるのかまた遅くなります。
とりあえず今はcronで定期的にselectするようにして対応しているのですが、
常にINDEXをメモリ上に置いておくような事を指定することは出来ますか?
(MySQL3)
0980NAME IS NULL
04/09/16 10:24:34ID:???"メモリにおけ"とか指定はできない。
だから、少なくとも1発目が遅いのはしかたない。
ただ、時間がたつとメモリから消えるってのはkey_bufferが小さいから。
key_buffer_sizeを可能な限りでかくするとよい。
すくなくとも通常使うインデックステーブルの合計サイズよりも大きく。
物理的に無理ならcronしかないんじゃない?
0981NAME IS NULL
04/09/16 19:40:15ID:b2eo1p8iありがとうございます。そうなんですね。
key_buffer_sizeはもうメモリと相談しながら結構上げてしまっているので、
cronでこれからも対処します。ありがとうございました。
0982NAME IS NULL
04/09/16 23:30:06ID:???SolarisとかAIXとかなら高そうだけど
PCアーキテクチャならメモリ安くない?
レス数が950を超えています。1000を超えると書き込みができなくなります。