MySQL総合 Part2

このエントリーをはてなブックマークに追加
933929:04/09/08 17:38 ID:???
>>931
・・・私の見落としでした。本当につまらないことでお手間お掛けしましてすいませんでした。

接続成功しました。
ガンマにしたのはどうしても副問合わせ機能が欲しかったからです。
934NAME IS NULL:04/09/09 19:03 ID:rmFC/2yU
あるテーブルと同じ構成のテーブルで名前を変えて作成したいのですが、どのようにしたらよいでしょうか?

descで構成を見て手で打つしかないでしょうか?
935NAME IS NULL:04/09/09 19:07 ID:???
>>934
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
936NAME IS NULL:04/09/09 19:26 ID:7IZplDLO
>>933
え?副問合わせついたの?いつから?
937NAME IS NULL:04/09/09 19:45 ID:???
>>副問い合わせ
4.1.0から
938NAME IS NULL:04/09/09 20:39 ID:???
CREATE TABLE new_tbl LIKE orig_tbl
が使えないバージョンでテーブル内のデータをコピーしたくないなら、
CREATE TABLE new_tbl SELECT * FROM orig_tbl WHERE 1=0;
という手もあるっぽい。
939NAME IS NULL:04/09/10 00:07 ID:???
データごといれてtruncateするとか
時間の無駄だけど
940NAME IS NULL:04/09/10 10:15 ID:5SZ4GfUz
>>935,938,939
ありがとうございます。
LIKEが使えず(MySQL3)、where 1=0 を使ってやる方法で行おうと思います。
ありがとうございます。

それにしても、where 1=0 というのはさすがに思い浮かばないですね(+_+)
勉強になりました。
941NAME IS NULL:04/09/10 13:13 ID:57HZlsAk
win2000sp4の環境でmysqlのgamma版-最新版をインストールして
mysqlサービスが開始していることを確認して、
\mysql\binで、mysqladmin create databaseとやっても
ローカルホストにつなげないというエラーがでてしまいます。
いろいろなページを検索しても、インストールの次にwinmysqladminを使うページや
使わないページなどがあり、混乱しています。
何がいけないのでしょうか?ご教授いただけたら幸いです。
942NAME IS NULL:04/09/10 13:34 ID:N09ASFq1
InnoDBのデータファイルなのですが、
データ件数を減らしても、ファイルサイズは減らないようです。
稼動したまま、このデータファイル(ibdata1)のサイズを、
減らすことは可能でしょうか?
可能な場合、その方法を教えてください。

マニュアルの該当ページでもいいです。
よろしくお願いします。
943NAME IS NULL:04/09/10 16:04:46 ID:???
>>941
aaaっていうdatabaseを作るとき、
> mysqladmin -u ユーザー名 -p create aaa
PASS: *******
でいいはず。

ログインしてから、
mysql> create database aaa;
でもいいが。
944NAME IS NULL:04/09/10 16:42:50 ID:???
>941
>ローカルホストにつなげないというエラーがでてしまいます。
自分で要約しないでコピペを貼りましょう
FAQクサいのでそうすればすぐに答えが出そうでふ
945NAME IS NULL:04/09/10 17:30:54 ID:???
>>942
InnoDBはそういうもんだ。InnoDBのサイトとか
MySQL的なこと(ファイルサイズの縮小等)なら
書籍「実践MySQL4」のメンテナンス関係なども参照。
946NAME IS NULL:04/09/12 02:45:15 ID:???
質問です。
4.1を業務で使っている方はいらっしゃいませんか?現在の安定度は
どうでしょうか?

実は、4.1をやや大規模なシステムに採用することを検討しています。
サブクエリが使えるので4.0よりSQLが書きやすくなり、また(必要な場合)
他のDBへの移行もしやすくなると考えたのです。システムが完成するまで
には正式版がリリースされるのではないかとも思っています。

4.1について、皆さんはどのようにお考えでしょうか?どうかお教え下さい。
947NAME IS NULL:04/09/12 09:13:35 ID:???
4.1.4を試してみようと思ってFreeBSD4.10のPortsでmakeしてみたら
md5.cでsyntax error出まくってmake失敗。シクシク。
948NAME IS NULL:04/09/12 21:07:55 ID:???
過去の経験からすると、ガンマ=リリース候補に近い感じだった気がするので、
いいんじゃないですか。

4.1から変わっている部分が多いので(文字エンコディングの扱いとか、パスワードとか)
今から新規に使うのなら4.1.xにしておいたほうが良いかもしれない。
(4.0.xからの移行は、MySQLの割にはちょっと面倒だし)
949NAME IS NULL:04/09/12 22:07:27 ID:???
厨房な質問で申し訳ない

WinXP SP1にインストールしようとしたら
「ファイル C:\mysql-4.0.16-win\SETUP.EXE(または必要なファイル)が見つかりません。
パス及びファイル名が正しいか、必要なライブラリがすべて使用可能かどうか、確認してください」

というメッセージが出ました。
ファイル、パスは正しいのですが、
必要なライブラリとはどういうことですか?
950946:04/09/12 22:12:22 ID:4+n+nB7W
>>948
ありがとうございます。逆に言えば、4.0で構築したシステムの4.1への移行は
なかなか困難なのですね。

実は、すでに部分的に4.0で構築を始めてしまっています。それらは4.1では
そのままでは動かないのですね…。

既存のコードが動くことを取るか、今後の開発効率を取るか、悩ましいところ
です。
951949:04/09/12 23:12:45 ID:???
>>949
ぐぐったら対応策分かりました。
スレ汚しスマソ
952NAME IS NULL:04/09/13 00:11:58 ID:???
>>950
いいんじゃない?4.0で。自分としては市場での
4.0→4.1への移行は結構掛かると思ってる。
接続ライブラリの互換性の問題で。
953NAME IS NULL:04/09/13 11:25:23 ID:fbc7TE9H
>>952
ありがとうございます。
私はサブクエリに馴染んでいるので、できるなら4.1を使いたかったのですが、
接続などに問題があるのですね。うーん。

しかし、パフォーマンスをあげるためにヒープに一時テーブルを作ったりしたら
他のDBとの互換性がまったくなくなるからなあ…。

接続部分をどこか一箇所でまとめて定義しているアプリケーションなら、
4.0 -> 4.1 への移行は比較的容易に行えないでしょうか?
954NAME IS NULL:04/09/13 11:46:48 ID:???
MySQLの質問ではないのですが。
MySQLのGUI管理クライアント(MySQL CCとかかねやんとか)で
Unicodeに対応したものはありますでしょうか?

Navicatが対応していますが、フリーウェアでは無いでしょうか?
955NAME IS NULL:04/09/13 12:41:52 ID:???
>>953
他のDBとの互換性を考えている時点で、
もう4.1の接続性なんて問題は関係ないのでは?
956NAME IS NULL:04/09/13 12:46:07 ID:???
>>953
互換性を問題にしている以上、4.1の接続性なんてのは小さな問題だよね。

どっちに主眼があるわけ、互換性と接続性。
それによって4.0でやるか、4.1でやるか決まるんじゃないの。
957NAME IS NULL:04/09/13 13:59:20 ID:fbc7TE9H
>>955-956
ありがとうございます。
私自身は互換性を重視していますが、プロジェクトのメンバ全体では意思の統一は
なされていません。引き続き検討します。

いろいろありがとうございました。
958952:04/09/13 17:09:00 ID:???
市場での浸透性には巷にばら撒かれてるクライアントライブラリの対応が
関わってくるってだけで、自分ところのことだけ考えれば良いような
(MySQL C/Sの範囲で)閉じたシステムならば、さくっとライブラリを
対応するものに置換すれば良いだけです。下位互換性は残ってますし、
問題になることは少ないでしょう。
959946:04/09/13 20:35:54 ID:???
>>958
ありがとうございます。
おかげさまで 4.1 の推進の決意が固まりました。
部内でも 4.1 を試験的に導入することで、意見がまとまりました。

お世話になりました。
960270:04/09/13 21:22:05 ID:???
何度もすみませんが、また質問させてください。

MySQL の 4.0 系と 4.1 系を 1台のマシンで共存させられるのでしょうか?
サーバOS は Windows2000 です。
961946:04/09/13 21:22:57 ID:???
すみません。上の270 は 私です。他板の番号が出てしまいました。
962NAME IS NULL:04/09/13 21:52:27 ID:???
>>953
クライアントはそんなに気にしなくても大丈夫、な気がする。
少なくとも、古いクライアントから繋げない、ということはなかったんじゃないかな?(未確認)
ただ、パスワードの形式が変わっているので、その辺りは気をつけないといけないけど。
(old-passwdを使わないといけない)

テーブルについては、charとかvarcharの扱いが変わったので、
(バイト数じゃなくて文字数になった)
そのあたりにどの程度依存してるかによる。
日本語はtextで長さを気にせずつっこむよ、というコードばかりなら
(僕はそういうのが多い)
あまり困らない、かも。
963NAME IS NULL:04/09/13 21:53:16 ID:???
>>960
配置ディレクトリとポート番号を変えれば不可能じゃない。
ただし、

1. 設定ファイル(my.ini, my.cnf)は共有されるので、4.0と4.1で起動オプションを変えたい
場合にはプロセス起動時にコマンドラインオプションを指定する必要がある
2. Windowsのサービスとして登録した場合にサービス名(MySql)が重複するので、片方を
レジストリいじって変更するか、サービスとして登録しない(別の方法で起動する)ようにする
3. クライアントからの接続時、(標準でない方は)ポート番号を明示的に指定する必要がある

てな感じで結構面倒なので、素直に複数のマシンに分けたほうがいいと思う。
964963:04/09/13 21:55:19 ID:???
ごめん、訂正。

>>963
> 1. 設定ファイル(my.ini, my.cnf)は共有されるので、4.0と4.1で起動オプションを変えたい
> 場合にはプロセス起動時にコマンドラインオプションを指定する必要がある

my.ini (my.cnf)に [mysqld-4.0] みたいなセクション名を指定すれば、1つの設定ファイルで
それぞれのオプションを指定可能だった。
965NAME IS NULL:04/09/13 22:07:42 ID:???
>>960
インストーラでぶちこんだ場合は無理。手動で入れれば可能。
マニュアルの「複数のMySQLを動かす」云々の項目を参照。
勿論DBを共通に使える訳ではありませんよ。
966946:04/09/13 22:09:13 ID:???
>>962-964
大変、勉強になりました。ありがとうございました。
967946:04/09/13 22:12:02 ID:???
>>965
すみません、リロードし忘れました。
http://dev.mysql.com/doc/mysql/ja/Multiple_servers.html
これですね。ありがとうございました。
968NAME IS NULL:04/09/14 08:32:17 ID:???
質問です。
REVOKE ALLではGRANT権限の剥奪はできませんが、
GRANT OPTIONは

REVOKE ALL, GRANT ON …

のように、列挙できないのでしょうか。
969NAME IS NULL:04/09/14 09:30:43 ID:???
>>968
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
970968:04/09/14 16:50:29 ID:???
>>969
ありがとうございます。
4.0.20ですので、2回に分けることにします。
971NAME IS NULL:04/09/15 01:53:29 ID:c6myJgX5
4.0.21から4.1.4-gammaに変えてみました。
テーブル名に日本語使ってたら見事に全部化けるようになりました。
しかたないのでmysqldumpしたヤツからデータベース作り直したのですが
テーブル名がやはり一部化けます。(「者」という字が化けるみたい)
4.0から4.1のところでエンコーディングの設定の仕方が変わったのでしょうか?

972NAME IS NULL:04/09/15 05:52:38 ID:SsTXT8DJ
質問です

http://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です
基本的な質問で申し訳ありません
973972:04/09/15 05:59:00 ID:???
すいません。自分の書き込みを見て気付きました

' ではなく ` で括るんですね

お恥ずかしい・・・
974NAME IS NULL:04/09/15 19:04:40 ID:???
MYSQLに直で入れてる画像を表示させる時
サイズ変更するにはどうすれば・・・・。
getimageでWarning発生・・・。

DBに縦横サイズ格納してない場合です。
975974:04/09/15 19:44:39 ID:???
すいません。板違いですた。
976971:04/09/15 23:23:20 ID:c6myJgX5
自己レスです。
4.1からテーブル名もutfでつけるようになったんですね。
テーブル名=ファイル名なんでutfでつくろうとするけどWindows側のファイル名はsjis。
無理やりutfでファイルを作るんで一部の文字が化けるみたいです。
カラム名はともかくとしてテーブル名に日本語使うのはやっぱりやめたほうがいいようですね。
977NAME IS NULL:04/09/16 01:38:43 ID:???
>>976
個人的には「テーブル名=ファイル名」の部分の作りはオカシイと思うけどね。
日本語や文字コードがどうのこうのじゃなくて、ファイルシステムの
制限がテーブル名に影響するって点がね。UnixとWinでの大文字小文字違い然り。
978971:04/09/16 08:20:44 ID:???
>>977
うん、漏れもそう思う。
979NAME IS NULL:04/09/16 09:48:05 ID:b2eo1p8i
当たり前かもしれませんが、INDEXをつけていてもシステム起動後、
1発目のアクセスがかなり遅いです(数十万レコードのテーブル)。

2回目はメモリ上にあるのか、通常どおり爆速です。
しかし、相当時間ほっとくとメモリから消えるのかまた遅くなります。

とりあえず今はcronで定期的にselectするようにして対応しているのですが、
常にINDEXをメモリ上に置いておくような事を指定することは出来ますか?
(MySQL3)
980NAME IS NULL:04/09/16 10:24:34 ID:???
>>979
"メモリにおけ"とか指定はできない。
だから、少なくとも1発目が遅いのはしかたない。

ただ、時間がたつとメモリから消えるってのはkey_bufferが小さいから。
key_buffer_sizeを可能な限りでかくするとよい。
すくなくとも通常使うインデックステーブルの合計サイズよりも大きく。
物理的に無理ならcronしかないんじゃない?
981NAME IS NULL:04/09/16 19:40:15 ID:b2eo1p8i
>>980
ありがとうございます。そうなんですね。
key_buffer_sizeはもうメモリと相談しながら結構上げてしまっているので、
cronでこれからも対処します。ありがとうございました。
982NAME IS NULL
>>981
SolarisとかAIXとかなら高そうだけど
PCアーキテクチャならメモリ安くない?