私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 総合 Part23
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
CentOS上で動くMySQLに読み書きするC言語のプログラムを書きたいです。
サンプルソースコードなどがあるプログラミングの参考となるサイトはないでしょうか。
または書籍など。
MySQL C API、Connector/C、Connector/ODBC当たりを使うのかなと思うのですが、
探し方が悪いのかそれらの導入から使い方までが分かりやすく書いてあるサイトが見つかりません。
ご存知の方がいましたら教えていただけると助かります。
ODBCに関しては、例えばDBをMySQLからPostgreSQL等に変更した場合もソースコードの変更は
ほとんどしないで切り替えられるのかと思いました。
サンプルソースコードなどがあるプログラミングの参考となるサイトはないでしょうか。
または書籍など。
MySQL C API、Connector/C、Connector/ODBC当たりを使うのかなと思うのですが、
探し方が悪いのかそれらの導入から使い方までが分かりやすく書いてあるサイトが見つかりません。
ご存知の方がいましたら教えていただけると助かります。
ODBCに関しては、例えばDBをMySQLからPostgreSQL等に変更した場合もソースコードの変更は
ほとんどしないで切り替えられるのかと思いました。
質問です
REPLACE INTO mytable(id, name, a, b) VALUES('id1', 'ほげ',52,10),('id2','おはよう',14,2)
で挿入または更新はできたのですが、例えば
バルク更新でカラム(id, name, a, b)の4つを指定したとき、
4つ全部更新したいものや、2つだけ更新したいものを一度に扱いたい場合があると思うます。
そのときのVALUESはどう指定すればいいのでしょうか?
VALUES('id1',,,10) ←空で指定する エラー
VALUES('id1',NULL,NULL,10) ←NULLまたはデフォルト値入ってしまう
VALUES('id1',name,a,10) ←デフォルト値が入ってしまう
といった感じでうまくいきません。
でもなぜか、
VALUES('id1',id,52,10)
という風に自分自身(name)とは別のカラム名を指定すると
id1 という値がnameのところに入りました。
自分自身の値を取得できるような方法などありましたら教えてくださいm(_ _)m
REPLACE INTO mytable(id, name, a, b) VALUES('id1', 'ほげ',52,10),('id2','おはよう',14,2)
で挿入または更新はできたのですが、例えば
バルク更新でカラム(id, name, a, b)の4つを指定したとき、
4つ全部更新したいものや、2つだけ更新したいものを一度に扱いたい場合があると思うます。
そのときのVALUESはどう指定すればいいのでしょうか?
VALUES('id1',,,10) ←空で指定する エラー
VALUES('id1',NULL,NULL,10) ←NULLまたはデフォルト値入ってしまう
VALUES('id1',name,a,10) ←デフォルト値が入ってしまう
といった感じでうまくいきません。
でもなぜか、
VALUES('id1',id,52,10)
という風に自分自身(name)とは別のカラム名を指定すると
id1 という値がnameのところに入りました。
自分自身の値を取得できるような方法などありましたら教えてくださいm(_ _)m
あれからいろいろとやっていて、そもそも自分のやりたいことは
REPLACE INTOじゃなくINSERT INTO ON DUPLICATE KEY UPDATE
だったことに気付きましたすみません。
で、ON DUPLICATE KEY UPDATE以降を
name = IF(VALUES(name)='',name,VALUES(name)), a = IF(VALUES(a)='',a,VALUES(a))
みたいに書いたところ(たぶん)思い通りの感じになりました
もっと効率良い方法がありましたらお願いします
REPLACE INTOじゃなくINSERT INTO ON DUPLICATE KEY UPDATE
だったことに気付きましたすみません。
で、ON DUPLICATE KEY UPDATE以降を
name = IF(VALUES(name)='',name,VALUES(name)), a = IF(VALUES(a)='',a,VALUES(a))
みたいに書いたところ(たぶん)思い通りの感じになりました
もっと効率良い方法がありましたらお願いします
>>755
それは効率いい方法無い
それは効率いい方法無い
会社の案件管理にデータベース使いたいとおもてます
mySQLとPHPもしくはperlCGIで構築したいです。
けどぜろから作るより既存のフリーテンプレが何かあるんじゃないかと。
定番のなにかオススメありませんけ
mySQLとPHPもしくはperlCGIで構築したいです。
けどぜろから作るより既存のフリーテンプレが何かあるんじゃないかと。
定番のなにかオススメありませんけ
やりたいことは
・折衝案件登録
・受注済か折衝中か
・作業の進捗
・担当者ひもづけ
・受注額と外注費、粗利
これらを月ごとに〆て会議資料にしたい
・折衝案件登録
・受注済か折衝中か
・作業の進捗
・担当者ひもづけ
・受注額と外注費、粗利
これらを月ごとに〆て会議資料にしたい
>>758
最後の一個以外はRedmineとかでいけるが。
最後の一個以外はRedmineとかでいけるが。
RDBの勉強を始めたところなのですが、トランザクションのロック単位が分かりません。
トランザクションの中で異なる複数のテーブルを順番に読み書きしている場合、
START TRANSACTIONを実行した瞬間から、これらの複数テーブルあるいは対象レコードに
一斉にロックがかかるのでしょうか。
そうならないと矛盾が起きると思うのですが。
トランザクションの中で異なる複数のテーブルを順番に読み書きしている場合、
START TRANSACTIONを実行した瞬間から、これらの複数テーブルあるいは対象レコードに
一斉にロックがかかるのでしょうか。
そうならないと矛盾が起きると思うのですが。
>>760
「読み取り一貫性」「トランザクションレベル」とかでググれ
「読み取り一貫性」「トランザクションレベル」とかでググれ
トランザクションは難しいよねぇ。
ISAMをイサムと読んでる俺には無理だったよwww
ISAMをイサムと読んでる俺には無理だったよwww
>>760
START TRANSACTION を送信した瞬間にDBMSが
「お、このアプリはテーブルAとテーブルBを使いそうな予感がしたのでロックしておこう」
という処理をするのは矛盾以前に不可能と存じます。
START TRANSACTION を送信した瞬間にDBMSが
「お、このアプリはテーブルAとテーブルBを使いそうな予感がしたのでロックしておこう」
という処理をするのは矛盾以前に不可能と存じます。
>>765
全テーブルロックしろよ
全テーブルロックしろよ
いやあ^^;
俺もさっき、ド下手なコード書いたらロックが掛かって困ったw
頑張って競合しないようにコード修正しよ。
俺もさっき、ド下手なコード書いたらロックが掛かって困ったw
頑張って競合しないようにコード修正しよ。
MySQL 5.6のデータを5.0に移植しようとして
こんなdumpコマンド打って
#mysqldump -u root -p -x --all-databases > dump.sql
んで5.0に対して移植するとき下のコマンド打ったら
# mysql -u root < dump.sql
STATS_PERSISTENT=0って構文がおかしいよ、ってエラーがでたので
これを下みたいに全部削除したら上手く読みこめたんだが
元:ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information'
改:ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
このSTATS_PERSISTENT=0って結局なんのか?
こんなdumpコマンド打って
#mysqldump -u root -p -x --all-databases > dump.sql
んで5.0に対して移植するとき下のコマンド打ったら
# mysql -u root < dump.sql
STATS_PERSISTENT=0って構文がおかしいよ、ってエラーがでたので
これを下みたいに全部削除したら上手く読みこめたんだが
元:ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information'
改:ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Relay Log Information'
このSTATS_PERSISTENT=0って結局なんのか?
相談があります。
ゲーム情報サイトを作っていまして
ページの右上に、次のように登録情報数を表示させたいです。
登録ゲーム数(国内):XXXXX本
登録ゲーム数(海外):XXXXX本
このとき、データ件数を高速で取得するため
トリガを使う方法を考えました。
参考:ttp://developer.cybozu.co.jp/archives/kazuho/2009/06/mysql-innodb-se.html
ですが、これだと「国内」と「国外」でテーブルを分けないといけません。
英語版サイトも作る予定ですので、
日本のゲームと世界各国のゲーム情報は等価で扱いたい、
つまり同じテーブルで管理したいです。
データ総数は10万件ほどになる見込みで、
トリガを使わないインデックス全スキャンも避けたいのですが、
上記の件数表示を高速で行う何か良い方法はありませんでしょうか?
ゲーム情報サイトを作っていまして
ページの右上に、次のように登録情報数を表示させたいです。
登録ゲーム数(国内):XXXXX本
登録ゲーム数(海外):XXXXX本
このとき、データ件数を高速で取得するため
トリガを使う方法を考えました。
参考:ttp://developer.cybozu.co.jp/archives/kazuho/2009/06/mysql-innodb-se.html
ですが、これだと「国内」と「国外」でテーブルを分けないといけません。
英語版サイトも作る予定ですので、
日本のゲームと世界各国のゲーム情報は等価で扱いたい、
つまり同じテーブルで管理したいです。
データ総数は10万件ほどになる見込みで、
トリガを使わないインデックス全スキャンも避けたいのですが、
上記の件数表示を高速で行う何か良い方法はありませんでしょうか?
毎回スキャンっていうのがどうもな
INSERTした時にどっかに数保存しとけばいいやん
INSERTした時にどっかに数保存しとけばいいやん
そうですね。
削除や発売国を更新した時も数を更新して。
ただ荒らし対策で(Wikiのように誰でもデータを更新できる)
特定ユーザーが登録したデータの一括削除機能もあるのです。
ちゃんと何件削除したかを制御して数を更新しないと・・・
バグの素ですね・・・。
そして2行目に書いた「削除や発売国を更新した時も数を更新して」についても
複数ユーザーがほぼ同時に同じゲームデータの発売国を更新したときとかに
きちんと制御しきれるか・・・頭が痛い・・・。
削除や発売国を更新した時も数を更新して。
ただ荒らし対策で(Wikiのように誰でもデータを更新できる)
特定ユーザーが登録したデータの一括削除機能もあるのです。
ちゃんと何件削除したかを制御して数を更新しないと・・・
バグの素ですね・・・。
そして2行目に書いた「削除や発売国を更新した時も数を更新して」についても
複数ユーザーがほぼ同時に同じゲームデータの発売国を更新したときとかに
きちんと制御しきれるか・・・頭が痛い・・・。
>>779
微妙な処理をするときは、あらためて件数を数えたらどうだろう。
微妙な処理をするときは、あらためて件数を数えたらどうだろう。
+1するとか-1するとかじゃなくてinsertとかしたときに数えなおせばいいじゃん
10万件なんてそんな負荷掛からんのだから
10万件なんてそんな負荷掛からんのだから
正確な数字を取ろうとすると
テーブルの全レコードをロックして数えることになるので
正確な数字は諦めるか・・・。
正確な数字は諦めて>>780さん案になりそうです。
トリガ案も大量INSERTとDELETの負荷が恐いし。
皆さんありがとうございました。
テーブルの全レコードをロックして数えることになるので
正確な数字は諦めるか・・・。
正確な数字は諦めて>>780さん案になりそうです。
トリガ案も大量INSERTとDELETの負荷が恐いし。
皆さんありがとうございました。
>>779
だからDBにもたせなきゃいいってのに。常に厳密な数字が必要とは思えんし
だからDBにもたせなきゃいいってのに。常に厳密な数字が必要とは思えんし
どのくらいのアクセス数を見込んでるのかわからんが、
この程度の話を聞いてるような奴が作ってるページは毎回count(*)やっても
DBに負荷かからないから安心していいよw
この程度の話を聞いてるような奴が作ってるページは毎回count(*)やっても
DBに負荷かからないから安心していいよw
MySQLでチェックポイントファイルを作るにはどうすればいいんでしょうか?
教えてください。
教えてください。
mysqlって複数のテーブルで共有して使えるauto_incrementとかないの?
>>791
ほかのDBにはあるの? 便利そうだなそれ
ほかのDBにはあるの? 便利そうだなそれ
MySQLにそんなものがあったら
一つのテーブルを操作するときに全部のテーブルとの操作を制御しなきゃならなくなり
構造上作れないと思え
・・・・・・と思ったが『数える用』のテーブルでも作って→そこにINSERTして→帰ってきたauto_incrementの数値を取得
すりゃ解決するな
一つのテーブルを操作するときに全部のテーブルとの操作を制御しなきゃならなくなり
構造上作れないと思え
・・・・・・と思ったが『数える用』のテーブルでも作って→そこにINSERTして→帰ってきたauto_incrementの数値を取得
すりゃ解決するな
>>792
postgresqlはシーケンスオブジェクトっていう、selectするたびに数字が増えるものが別途存在するので
複数のテーブルから利用することもできる
auto incrementに相当する serial は デフォルト値にシーケンスオブジェクトが設定されたintカラム
postgresqlはシーケンスオブジェクトっていう、selectするたびに数字が増えるものが別途存在するので
複数のテーブルから利用することもできる
auto incrementに相当する serial は デフォルト値にシーケンスオブジェクトが設定されたintカラム
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- MySQL 総合 Part25 (947) - [94%] - 2017/6/18 6:30
- MySQL 総合 Part24 (1010) - [94%] - 2015/2/14 4:46
- MySQL 総合 Part13 (996) - [94%] - 2008/6/10 21:02 ☆
- MySQL 総合 Part22 (1001) - [94%] - 2012/7/10 16:45
- MySQL 総合 Part26 (860) - [94%] - 2023/2/2 9:30
- MySQL 総合 Part21 (1001) - [94%] - 2011/12/25 22:16
- MySQL 総合 Part20 (995) - [94%] - 2011/10/17 4:48
- MySQL 総合 Part12 (1001) - [89%] - 2008/1/30 17:34 ○
- MySQL 総合 Part18 (986) - [89%] - 2011/1/17 15:46
- MySQL 総合 Part14 (1001) - [89%] - 2008/11/23 10:17 ☆
- MySQL 総合 Part15 (1001) - [89%] - 2009/4/20 12:15 ☆
- MySQL 総合 Part17 (1001) - [89%] - 2010/6/10 20:47 ○
- MySQL 総合 Part19 (982) - [89%] - 2011/6/9 2:33
- MySQL vs PostgreSQL Part2 (941) - [36%] - 2022/5/26 1:30 ○
トップメニューへ / →のくす牧場書庫について