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

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレMySQL 総合 Part20

mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
101 : NAME IS - 2011/07/04(月) 20:36:15.36 ID:??? (+71,+29,-4)
プロレスの技か何かですか?
102 : NAME IS - 2011/07/05(火) 01:59:14.09 ID:??? (+52,+29,+0)
プリンセススピニングトゥホールド
104 : NAME IS - 2011/07/05(火) 05:41:13.69 ID:??? (+21,+3,+0)
問題ない
105 : NAME IS - 2011/07/05(火) 08:05:41.61 ID:??? (+62,+29,-48)
別に間違ってはいない。

ただ、そのDBを複数アプリから触るシステムだったりする場合、
DBでデフォ値設定できるならしておいた方が、
今後のシステム保守でのバグ発生率がちょびっと下がるというのはあるかもね。
106 : NAME IS - 2011/07/05(火) 09:18:25.11 ID:??? (+26,-1,-31)
どんなバグが発生するの?
そのバグはdefault値があると本当に発生しないバグなの?
107 : NAME IS - 2011/07/05(火) 10:55:30.08 ID:??? (+57,+29,-32)
バグというか、他のプログラムが別の値をデフォルト値として入れようとしていたらどうする?
プログラム毎にデフォルト値が違うのってややこしくならないか?
108 : NAME IS - 2011/07/05(火) 11:30:54.51 ID:??? (+62,+29,-43)
システム新規作成時:
 全アプリで、デフォルト値設定が同じになっているか。
システム保守において:
 業務的にデフォルト値が変わった時、全アプリ漏れなく設定値修正

こういうのを、手間ゼロで間違い無く出来るんだったらいいけど、そうはいかない。
だからDBという一箇所だけで定められるんだったら、その方が望ましいんよ。
109 : NAME IS - 2011/07/05(火) 13:35:11.26 ID:??? (-1,-29,-44)
アプリで複数のテーブルを結合したSQL文を発行するより
DBでVIEWをつくったほうがよい?
110 : 103 - 2011/07/05(火) 13:43:10.95 ID:??? (+62,+29,-34)
ご返信ありがとうございます。
複数アプリから使われるということはありえないDBですので、アプリ側でデフォルト値を設定しても問題無いのですね。
というか、複数アプリからDBが使われるというケース自体全く想定していなかったので勉強になりました。
111 : NAME IS - 2011/07/05(火) 15:25:07.35 ID:??? (+57,+29,-30)
DBを複数のプログラムが使うって当たり前の事じゃないのか?
「複数アプリから使われるということはありえない」という方が珍しいとさえ思うけど
112 : 103 - 2011/07/05(火) 16:13:42.31 ID:??? (+57,+29,-30)
たぶんプログラマとしてのレベルが違いすぎるんだと思いまする。
自分が作ろうとしてるのはSNSとかの単純なWEBサイトです。
WEBアプリという言い方が悪かったかもしれません。
113 : NAME IS - 2011/07/05(火) 16:16:33.06 ID:??? (+57,+29,-21)
プログラムの塊として捉えてるからおかしい
画面単位で考えな
SNSっていったって登録、更新、削除といろいろあるでしょ
ようするに複数画面から使われてる
114 : NAME IS - 2011/07/05(火) 17:15:05.46 ID:??? (+13,-19,-57)
複数画面が使われても統一したDBクラスでアクセスするなら
そのクラスでデフォルト値を設定すれば済むこと。

個人的にはDBのデフォルト値はあんま意味無いと思うけどな。
デフォルト値等の設定・管理をDB側、プログラム側で分かれるのは不便だし、
結局プログラムからDBの値を読み出すときにDBのデフォルト値の設定を信用せず
値のチェックや正規化を行うようにするからな。
115 : NAME IS - 2011/07/05(火) 17:50:02.44 ID:??? (+4,-18,-3)
SNSは単純じゃないですw
116 : NAME IS - 2011/07/05(火) 21:48:17.47 ID:??? (+13,-30,-118)
トランザクション処理を教えてください

テーブルAとBをロック
テーブルAの更新部分を取得
テーブルAを更新
lastInsertIdを調べる
問題なし
テーブルBの更新部分を取得
lastInsertIdを調べる
*問題なし
テーブルAとBをアンロック

もし*のところで問題があったら
Aを更新前に戻して終了といった感じでいいでしょうか?
更新前に戻す処理に問題が発生した場合はどうするんだって感じですが
ロールバック失敗みたいなことはおこるのでしょうか?

ちなみにエンジンはMyISAMです
117 : 116 - 2011/07/05(火) 21:49:10.71 ID:??? (+17,-20,-5)
すみません抜けてました

>テーブルBの更新部分を取得
この後にテーブルBの更新です
118 : NAME IS - 2011/07/05(火) 22:15:26.23 ID:??? (+32,-29,-12)
そもそも MyIsamはトランザクション使えないけど。
トランザクション使いたいんならInnoDBですよ?
119 : 117 - 2011/07/05(火) 22:23:54.84 ID:??? (+62,+29,-10)
>>118
トランザクションがエミュレートできると書いてたので
やりようによってはできるのかなぁと
120 : NAME IS - 2011/07/05(火) 22:50:47.39 ID:??? (+42,+14,-34)
MyISAMにロールバック機能はないから
Aを更新前に戻すにはプログラム側で更新前の値を覚えておいて
その値にするようなUPDATE文を実行するわけだけど。
かえってめんどくさくね
121 : NAME IS - 2011/07/05(火) 22:59:52.97 ID:??? (+31,-29,-11)
1桁の0-9を入れる型として正しいのはなんでしょうか?
122 : NAME IS - 2011/07/06(水) 00:20:57.24 ID:??? (+63,-29,-100)
PRIMARYでもFOREIGNでもUNIQUEでもない
ただのKEYという制約がついてるんですが
これはどういうものなんでしょう?
SHOW CREATE TABLEをしたら出てきたのですが
なんでこんなのがついてるのかは自分でも分かりません
KEYだけだと検索ワードが多すぎて調べるのがきついです
123 : NAME IS - 2011/07/06(水) 00:28:33.81 ID:??? (+62,+29,-14)
>>122
制約じゃなくて単なるインデックス、それは。
124 : NAME IS - 2011/07/06(水) 00:29:19.83 ID:??? (-1,-29,-42)
KEYは制約じゃあない。
そもそも、SHOW CREATE TABLEで表示されるのはDDLそのものなんだから、
マニュアル読めば書いてあるだろ。
125 : 122 - 2011/07/06(水) 00:33:00.95 ID:??? (+10,-30,-309)
>>122だけだと情報がたりなさそうなので中身はこんな感じです

CREATE TABLE `item` (
`item_id` int(11) NOT NULL AUTO_INCREMENT,
`item_name` varchar(100) NOT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `item_image` (
`image_id` int(11) NOT NULL AUTO_INCREMENT,
`item_id` int(11) NOT NULL,
`image_path` varchar(255) NOT NULL,
PRIMARY KEY (`image_id`);
UNIQUE KEY `image_path` (`image_path`),
KEY `item_id` (`item_id`),
CONSTRAINT `item_image_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `item` (`item_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
126 : 122 - 2011/07/06(水) 00:34:04.94 ID:??? (+57,+29,-4)
すみませんリロードしてませんでした
インデックスだったんですね
どうもありがとうございます
DDLは何のことか分からないので調べてきます
127 : NAME IS - 2011/07/06(水) 08:10:31.39 ID:??? (+61,+29,+1)
>>121
正解などない。好きにしろ。
128 : NAME IS - 2011/07/06(水) 13:32:30.55 ID:??? (+4,-30,-76)
テーブルに指定する
DEFAULT CHARACTER SET utf8

DEFAULT CHARSET=utf8
って何が違うんですか?
129 : NAME IS - 2011/07/06(水) 22:16:10.26 ID:??? (+3,-30,-229)
質問です。

create table tblA(
clm1,
clm2,
clm3
)
create view vB AS
SELECT
clmElse AS clm3,
clmElse AS clm2,
clmElse AS clm1
FROM tblElse

この定義の時、カラム名を指定しなくて済むお手軽SQL文であるところの INSERT INTO tblA SELECT * FROM tblB を、
登録されるレコードの登録元と登録先のカラム名が一致するようにしたい。
tblAはしょっちゅう定義が変更されるので、カラム名を指定するINSERTを書くのは避けたい。
tblAに変更がある毎にビューを再定義するのは、保守担当者が再定義することを忘れるリスクが高いので最後の手段にしたい。

何かいい方法はありますか?
130 : NAME IS - 2011/07/06(水) 22:23:23.99 ID:??? (-2,-30,-9)
× INSERT INTO tblA SELECT * FROM tblB
○ INSERT INTO tblA SELECT * FROM vB

誤字訂正
131 : NAME IS - 2011/07/06(水) 22:41:13.02 ID:??? (+57,+29,-68)
tblAのメンテ担当者とvBの担当者とアプリの担当者はそんなに仲が悪いのか?
飲み会企画するとか、あるいはまず休憩所で声をかけてみてどんなことに興味が
あるか聞き出してみるとか?
132 : NAME IS - 2011/07/06(水) 23:31:09.64 ID:??? (-6,-29,-1)
DDLってなに?
133 : NAME IS - 2011/07/06(水) 23:43:06.82 ID:??? (+15,-7,+2)
だん だん Lサイズ
134 : NAME IS - 2011/07/06(水) 23:58:21.68 ID:??? (-5,-28,+0)
どん どん Lサイズ
135 : NAME IS - 2011/07/07(木) 01:05:43.66 ID:??? (-6,-29,-2)
どき どき Lサイズ
136 : NAME IS - 2011/07/07(木) 22:17:23.70 ID:??? (+42,+19,+0)
↑この流れ

2chあるある
137 : NAME IS - 2011/07/08(金) 01:10:31.21 ID:??? (+10,-12,+0)
↑この流れ

2chなしなし
138 : NAME IS - 2011/07/08(金) 06:54:24.02 ID:??? (+0,-23,-13)
↑この流れ

2chしこしこ
139 : NAME IS - 2011/07/08(金) 10:46:14.36 ID:??? (+32,+9,-12)
↑この流れ

2chもみもみ
140 : NAME IS - 2011/07/08(金) 14:49:26.52 ID:??? (-1,-29,-17)
auto_incrementは操作しない限り1、2、3、~という感じに増えていきますが
0、1、2、3、~とすることは出来ないんでしょうか?
141 : NAME IS - 2011/07/08(金) 15:06:31.45 ID:??? (+49,+26,-1)
>操作しない限り

どういうこと?
142 : NAME IS - 2011/07/08(金) 15:13:47.63 ID:??? (+12,-30,-18)
すみません、phpmyadmin使ってます
主キーにauto_incrementを使ってるのですが
それを1~ではなく0~にしたいと思ってまして
143 : 43 - 2011/07/08(金) 15:32:23.12 ID:??? (+3,-30,-41)
>>128

MySQL :: MySQL 5.5 Reference Manual :: 9.1.3 Specifying Character Sets and Collations
http://dev.mysql.com/doc/refman/5.5/en/charset-syntax.html

CHARSET can be used as a synonym for CHARACTER SET.
144 : NAME IS - 2011/07/08(金) 16:30:30.06 ID:??? (+32,-29,-3)
>>142
無理
indexってそのまんまindexだからindex以下にはできない
145 : NAME IS - 2011/07/08(金) 16:35:15.12 ID:??? (+39,-30,-69)
>>142
auto_increment_offset などを見てると 0 は設定できない気がする...

0 からスタートさせるのではないのだが、
set sql_mode="NO_AUTO_VALUE_ON_ZERO" してから
insert すれば 0 を入れることも可能。
# トラブルの原因になりそうだから嫌だけど
http://dev.mysql.com/doc/refman/5.1/ja/server-sql-mode.html#id378544
146 : NAME IS - 2011/07/08(金) 16:36:41.21 ID:??? (+63,+29,-6)
>>144>>145
なるほどー、やっぱり無理はしないほうがいいみたいですね
親切にどうもありがとうございます
147 : NAME IS - 2011/07/08(金) 22:28:25.94 ID:??? (+91,+29,-59)
文字化けとかじゃなくて保存した全角文字を表示すると
どーしても全角の部分が???になっちゃうんですが
考えられる原因とかあるでしょうか?
自分で思い当たるのは大体やったんですが・・・。
148 : NAME IS - 2011/07/08(金) 22:53:29.64 ID:??? (+3,-29,-75)
表示ってのは
MySQLコンソールとphpで表示する場合です
phpmyadminで見るとちゃんと全角で「日本人」となるのですが
他だと???に
ちなみにレコードの挿入はphpmyadminで行いました
149 : NAME IS - 2011/07/09(土) 00:37:51.24 ID:??? (-1,-29,-8)
OS,MySQLのバージョン、文字コードの種類、設定情報一切の情報を隠してですか
150 : NAME IS - 2011/07/09(土) 06:09:53.51 ID:??? (+57,+29,-6)
>自分で思い当たるのは大体やったんですが

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

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


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