私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 総合 Part13
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ☆
レスフィルター : (試験中)
\ │ /
/ ̄\
─( ゚ ∀ ゚ )─
\_/
/ │ \
○○○ ○○○
○,,・ω・○ ○・ω・,,○
○○○ ○○○ o
o~(,_uuノ とuu_,)ノ
FREE TIBET
/ ̄\
─( ゚ ∀ ゚ )─
\_/
/ │ \
○○○ ○○○
○,,・ω・○ ○・ω・,,○
○○○ ○○○ o
o~(,_uuノ とuu_,)ノ
FREE TIBET
>>401
一旦 utf8 で作ったテーブルの charset を eucjpms に変えても、カラムの charset は utf8 のまま。
手っ取り早いのはテーブルを作り直すこと。
もしかしたら、
alter table xxx convert to charset eucjpms;
でも出きるかもしれないけど、やったことないからわからん。
一旦 utf8 で作ったテーブルの charset を eucjpms に変えても、カラムの charset は utf8 のまま。
手っ取り早いのはテーブルを作り直すこと。
もしかしたら、
alter table xxx convert to charset eucjpms;
でも出きるかもしれないけど、やったことないからわからん。
mysqlhotcopy でデータベースコピーしたあと
mysqldの再起動以外でデータベース読み込ませる方法ないでしょうか。
常時起動させているものなので極力再起動は避けたいです。
mysqldの再起動以外でデータベース読み込ませる方法ないでしょうか。
常時起動させているものなので極力再起動は避けたいです。
>>406
やったことは無いけど、mysqladmin refresh でどう?
やったことは無いけど、mysqladmin refresh でどう?
ERROR 1064 (42000): 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 'group
varchar(40),
こんなエラーメッセージが出ましたが、どういうことですか?
corresponds to your MySQL server version for the right syntax to use near 'group
varchar(40),
こんなエラーメッセージが出ましたが、どういうことですか?
reate table entry(
mail varchar(15),
domain varchar(15),
is_a_group bool,
name varchar(20),
group varchar(40),
post varchar(20),
prefecture varchar(8),
station varchar(20),
adress varchar(40),
tel1 int(4),
tel2 int(4),
tel3 int(4),
birthday date,
industry varchar(40),
type varchar(40),
job varchar(20),
user varchar(20),
agree bool
);
mail varchar(15),
domain varchar(15),
is_a_group bool,
name varchar(20),
group varchar(40),
post varchar(20),
prefecture varchar(8),
station varchar(20),
adress varchar(40),
tel1 int(4),
tel2 int(4),
tel3 int(4),
birthday date,
industry varchar(40),
type varchar(40),
job varchar(20),
user varchar(20),
agree bool
);
reate table entry(
'mail' varchar(15),
'domain' varchar(15),
'is_a_group' bool,
'name' varchar(20),
'group' varchar(40),
'post' varchar(20),
'prefecture' varchar(8),
'station' varchar(20),
'adress' varchar(40),
'tel1' int(4),
'tel2' int(4),
'tel3' int(4),
'birthday' date,
'industry' varchar(40),
'type' varchar(40),
'job' varchar(20),
'user' varchar(20),
'agree' bool
);
'mail' varchar(15),
'domain' varchar(15),
'is_a_group' bool,
'name' varchar(20),
'group' varchar(40),
'post' varchar(20),
'prefecture' varchar(8),
'station' varchar(20),
'adress' varchar(40),
'tel1' int(4),
'tel2' int(4),
'tel3' int(4),
'birthday' date,
'industry' varchar(40),
'type' varchar(40),
'job' varchar(20),
'user' varchar(20),
'agree' bool
);
ファイルをキャッシュするのにmysqlを使おうと思います
ファイルパスをキーにしてインデックスを張ることになるかと思いますが
そうなると255文字程度の長さは必要になります
そんな長いインデックスは実用的なのでしょうか?
ファイルパスをキーにしてインデックスを張ることになるかと思いますが
そうなると255文字程度の長さは必要になります
そんな長いインデックスは実用的なのでしょうか?
そんなときは、数値でID付けてそのIDを結合したものにインデックス張るといいよ。
>>405
ありがとうございます。
「MySQL入門以前」という本を見ながらやっているのですが、
「データベースの初期化」というのは書いておらず、まだ一度もやっていません。
もうすこしよく勉強して、はじめからやり直してみようと思います。
ありがとうございました。
ありがとうございます。
「MySQL入門以前」という本を見ながらやっているのですが、
「データベースの初期化」というのは書いておらず、まだ一度もやっていません。
もうすこしよく勉強して、はじめからやり直してみようと思います。
ありがとうございました。
ファイルパスにmd5使うって超いいじゃん
バッティングすることなんて天文学的確率だろ
キャッシュ用途としては充分じゃね?
バッティングすることなんて天文学的確率だろ
キャッシュ用途としては充分じゃね?
レコードの電話番号フィールドに「012-3456-7890」のような文字列が入ってるとして、
「01234567890」でもselect文で検索できるような方法はありますか?
concatのようなselect文中に挿入してレコードの文字列を置き換え(削除)つつ検索できたら
とても幸せなのですが、何かありますでしょうか?
「01234567890」でもselect文で検索できるような方法はありますか?
concatのようなselect文中に挿入してレコードの文字列を置き換え(削除)つつ検索できたら
とても幸せなのですが、何かありますでしょうか?
>>419
フィールドが半角のみ確実なら正規表現 REGEXP 使えるよ
フィールドが半角のみ確実なら正規表現 REGEXP 使えるよ
質問で申し訳ないのですが、こんなトリガを書きました。
create TRIGGER Ins_T101
BEFORE INSERT ON `T101_BizUnit`
FOR EACH ROW
BEGIN
DECLARE PrevVer integer DEFAULT 0;
DECLARE InsVer integer DEFAULT 0;
DECLARE PrevExpiration_Date DATE DEFAULT CURRENT_DATE;
DECLARE PrevRecords integer DEFAULT 0;
SELECT COUNT(`ID`) into PrevRecords from `T101_BizUnit` src WHERE src.`Category` = NEW.`Category` AND src.`ID` = NEW.`ID` limit 1;
SET InsVer = NEW.`Version`;
IF PrevRecords > 0 THEN
IF InsVer = 1 THEN
select max(`Version`) into PrevVer from `T101_BizUnit` where `Category` = NEW.`Category` and `ID` = NEW.`ID` limit 1;
SET NEW.`Version` = PrevVer + 1 ;
SET PrevExpiration_Date = NEW.Register_Date - 1;
END IF;
UPDATE `T101_BizUnit` SET `Expiration_Date` = PrevExpiration_Date
WHERE `Category` = NEW.`Category` and `ID` = NEW.`ID` AND `Version` = PrevVer;
END IF;
END;
で登録自体はうまくいったのですが、テーブルに↓こんな感じで、
mysql> insert into T101_BizUnit set `Category` = 1, `ID` = 4, `Register_Date` = '2008-03-25';
Insertを試みると、↓のように怒られてしまいます。
ERROR 1442 (HY000): Can't update table 'T101_BizUnit' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
基本的に、トリガというのは呼び出し元がいじっているテーブルそのものはいじれないのが
仕様なのでしょうか?
よろしかったらご意見お聞かせください。
create TRIGGER Ins_T101
BEFORE INSERT ON `T101_BizUnit`
FOR EACH ROW
BEGIN
DECLARE PrevVer integer DEFAULT 0;
DECLARE InsVer integer DEFAULT 0;
DECLARE PrevExpiration_Date DATE DEFAULT CURRENT_DATE;
DECLARE PrevRecords integer DEFAULT 0;
SELECT COUNT(`ID`) into PrevRecords from `T101_BizUnit` src WHERE src.`Category` = NEW.`Category` AND src.`ID` = NEW.`ID` limit 1;
SET InsVer = NEW.`Version`;
IF PrevRecords > 0 THEN
IF InsVer = 1 THEN
select max(`Version`) into PrevVer from `T101_BizUnit` where `Category` = NEW.`Category` and `ID` = NEW.`ID` limit 1;
SET NEW.`Version` = PrevVer + 1 ;
SET PrevExpiration_Date = NEW.Register_Date - 1;
END IF;
UPDATE `T101_BizUnit` SET `Expiration_Date` = PrevExpiration_Date
WHERE `Category` = NEW.`Category` and `ID` = NEW.`ID` AND `Version` = PrevVer;
END IF;
END;
で登録自体はうまくいったのですが、テーブルに↓こんな感じで、
mysql> insert into T101_BizUnit set `Category` = 1, `ID` = 4, `Register_Date` = '2008-03-25';
Insertを試みると、↓のように怒られてしまいます。
ERROR 1442 (HY000): Can't update table 'T101_BizUnit' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
基本的に、トリガというのは呼び出し元がいじっているテーブルそのものはいじれないのが
仕様なのでしょうか?
よろしかったらご意見お聞かせください。
質問です。
データベース名にアンダーバーを入れるとなぜかたまにエラーになります。
たとえば「user_address」と言うデータベースを作るとなぜかエラーになる。
前後を区切りたいときは普通アンダーバーで区切ると思っていたのですがたまにエラーになるのでやめます。
普通はどの文字で区切るのかわかりません。
というかアンダーバー以外で区切る方法他にいい案ありますか?
データベース名にアンダーバーを入れるとなぜかたまにエラーになります。
たとえば「user_address」と言うデータベースを作るとなぜかエラーになる。
前後を区切りたいときは普通アンダーバーで区切ると思っていたのですがたまにエラーになるのでやめます。
普通はどの文字で区切るのかわかりません。
というかアンダーバー以外で区切る方法他にいい案ありますか?
>>423 自己解決しますた。
http://dev.mysql.com/doc/refman/5.1/ja/routine-restrictions.html
ストアド ファンクションまたはトリガ内では、その関数やトリガを実行したステートメントが
( 読み取り、または書込みに ) すでに使用しているテーブルを改変することはできない。
うぎゃー! 役に立たねージャン!
別テーブルに意図する操作内容を逃がして、定時トリガとかで反映させるくらいしか
アイディアが浮かばない。
どうしたらいいか、引き続きアイディア募集中!
http://dev.mysql.com/doc/refman/5.1/ja/routine-restrictions.html
ストアド ファンクションまたはトリガ内では、その関数やトリガを実行したステートメントが
( 読み取り、または書込みに ) すでに使用しているテーブルを改変することはできない。
うぎゃー! 役に立たねージャン!
別テーブルに意図する操作内容を逃がして、定時トリガとかで反映させるくらいしか
アイディアが浮かばない。
どうしたらいいか、引き続きアイディア募集中!
>>424
なんでエラーなるの?エラーの内容は?
なんでエラーなるの?エラーの内容は?
>>427
それは、mysqlというよりかはOSのファイルシステムの問題じゃね。
それは、mysqlというよりかはOSのファイルシステムの問題じゃね。
質問です。
CREATE TABLE でPARTITION(TABLESPACEとか)を指定しなかったら
テーブルデータはどこに格納されるのでしょうか?
CREATE TABLE でPARTITION(TABLESPACEとか)を指定しなかったら
テーブルデータはどこに格納されるのでしょうか?
>>431
having
having
>>425
別テーブルに書き込んで、SELECTするときにJOINするとかどうよ?
別テーブルに書き込んで、SELECTするときにJOINするとかどうよ?
>>430
ん?何が知りたい?データディレクトリ?
ん?何が知りたい?データディレクトリ?
seqtable
---------------------------
id seq notes
a 1 ほげ1
a 2 ほげ2
a 3 ほげ3
b 1 ふが1
b 2 ふが2
b 3 ふが3
....
b 100 ふが100
---------------------------
IDごとにseqが振られているテーブルなんですが、
delete table seqtable WHERE id='b' and (seq=77||seq=97);
したあとに
ID:bの連番の欠番を低い順から抜き出すことはできますでしょうか?
(欠番がない場合は最大値+1を返してくれるようにしたいです。)
最大値は以下で取れるので
SELECT (MAX(seq)+1) As max FROM seqtable WHERE id='b';
>ID:bの連番の欠番を低い順
をお願いします。
---------------------------
id seq notes
a 1 ほげ1
a 2 ほげ2
a 3 ほげ3
b 1 ふが1
b 2 ふが2
b 3 ふが3
....
b 100 ふが100
---------------------------
IDごとにseqが振られているテーブルなんですが、
delete table seqtable WHERE id='b' and (seq=77||seq=97);
したあとに
ID:bの連番の欠番を低い順から抜き出すことはできますでしょうか?
(欠番がない場合は最大値+1を返してくれるようにしたいです。)
最大値は以下で取れるので
SELECT (MAX(seq)+1) As max FROM seqtable WHERE id='b';
>ID:bの連番の欠番を低い順
をお願いします。
>>435
テーブルの定義見せて。
テーブルの定義見せて。
>>440
入力した文字コードとテーブルの文字コードが合っていないに一票
入力した文字コードとテーブルの文字コードが合っていないに一票
>>434
データベースのデータがOS上のどこに
保管されているのか知りたいです。
例えば、Oracleの場合、tablespaceの
容量を超えてデータを入れようとすると
エラーになります。(自動拡張OFFで)
その場合は、tablespaceに対して
物理的なデータファイルを追加して
領域拡張してやるのですが、
MySQLの場合は、あちこち調べても
その部分の説明がほとんどされて
おらず、不思議に思っています。
DISKの領域がゆるす限りいくらでもデータを登録できるのか?
そうだとしてもDISK上のどのパーティション(Windowsなら
どのドライブ)に存在するのか知っていないと最大のデータ
格納量も予測できず、不安ではないかと思うのですが。
データベースのデータがOS上のどこに
保管されているのか知りたいです。
例えば、Oracleの場合、tablespaceの
容量を超えてデータを入れようとすると
エラーになります。(自動拡張OFFで)
その場合は、tablespaceに対して
物理的なデータファイルを追加して
領域拡張してやるのですが、
MySQLの場合は、あちこち調べても
その部分の説明がほとんどされて
おらず、不思議に思っています。
DISKの領域がゆるす限りいくらでもデータを登録できるのか?
そうだとしてもDISK上のどのパーティション(Windowsなら
どのドライブ)に存在するのか知っていないと最大のデータ
格納量も予測できず、不安ではないかと思うのですが。
>>442
どこに置かれるかはここに書いてるよ。
http://dev.mysql.com/doc/refman/5.1/ja/installation-layouts.html
「データベース」って書かれてるとこね。
んで、実際のファイルは使っているストレージエンジンによります。
http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
普通はMyISAMかInnoDBなので、該当の部分を読んでください。
どこに置かれるかはここに書いてるよ。
http://dev.mysql.com/doc/refman/5.1/ja/installation-layouts.html
「データベース」って書かれてるとこね。
んで、実際のファイルは使っているストレージエンジンによります。
http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
普通はMyISAMかInnoDBなので、該当の部分を読んでください。
>>442
つ http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
ここらへんをよく読もう。
各table typeによって格納される場所は異なる。
つ http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html
ここらへんをよく読もう。
各table typeによって格納される場所は異なる。
下記のようなSQLを書いた場合、
何故か id が 0 のものが抽出されてしまいます。
なぜでしょうか?
また、回避法はありますでしょうか?
※検索に利用する為、0と検索された場合はidが0のものが抽出されるようにしたいので
AND id <> 0
は使わないでやりたいです。
SELECT * FROM users WHERE id = 'うんこ'
何故か id が 0 のものが抽出されてしまいます。
なぜでしょうか?
また、回避法はありますでしょうか?
※検索に利用する為、0と検索された場合はidが0のものが抽出されるようにしたいので
AND id <> 0
は使わないでやりたいです。
SELECT * FROM users WHERE id = 'うんこ'
ありがとうございます。
ある意味オラクルよりややこしいですね。
ある意味オラクルよりややこしいですね。
>>447
usersのCREATE TABLEみせて
usersのCREATE TABLEみせて
>>449
こちらになります。
create table users (
index int(11) not null auto_increment,
id int(11) default '0' not null ,
pw varchar(40) not null ,
PRIMARY KEY (index)
);
こちらになります。
create table users (
index int(11) not null auto_increment,
id int(11) default '0' not null ,
pw varchar(40) not null ,
PRIMARY KEY (index)
);
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
みんなの評価 : ☆類似してるかもしれないスレッド
- MySQL 総合 Part12 (1001) - [94%] - 2008/1/30 17:34 ○
- MySQL 総合 Part14 (1001) - [94%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part15 (1001) - [94%] - 2009/4/20 12:15 ☆
- MySQL 総合 Part17 (1001) - [94%] - 2010/6/10 20:47 ○
- MySQL 総合 Part18 (986) - [94%] - 2011/1/17 15:46
- MySQL 総合 Part19 (982) - [94%] - 2011/6/9 2:33
- MySQL 総合 Part23 (992) - [94%] - 2013/8/11 17:00
- MySQL 総合 Part26 (860) - [89%] - 2023/2/2 9:30
- MySQL 総合 Part20 (995) - [89%] - 2011/10/17 4:48
- MySQL 総合 Part21 (1001) - [89%] - 2011/12/25 22:16
- MySQL 総合 Part22 (1001) - [89%] - 2012/7/10 16:45
- MySQL 総合 Part24 (1010) - [89%] - 2015/2/14 4:46
- MySQL 総合 Part25 (947) - [89%] - 2017/6/18 6:30
- MySQL vs PostgreSQL Part2 (941) - [31%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について