yambejp の回答履歴
![](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_100_5.gif)
- ロックテーブルサイズ超えのエラー対処
“ERROR 1206 (HY000): The total number of locks exceeds the lock table size”エラーが発生する場合の対処方法について教えてください。 /etc/my.cnfの“innodb_buffer_pool_size”を大きくするのが解決策ですので innodb_buffer_pool_size = 2G のように最大値に変更してみましたが、解決しませんでした。 一応、 max_connections も減らしてみましたが、解決しません。 PHPからMySQLにコネクションを接続し続けて切断するような処理はしていませんが、問題ありますでしょうか?(最初にmysql_connectで接続し、プログラムが終了するまで、何回もmysql_queryでSQL文(SELECTやUPDATE等)を実行しています。) 一概に言えませんが、データベースをバックアップでテキストで出力しても、300Mbyteくらいのデータですが、2Gのメモリを使うのでしょうか? 物理メモリを増やして innodb_buffer_pool_size を増やすしか解決方法がないのかご教授頂きたいです。 (ロックするテーブルは同時に1個しかしていないです。) 詳細な内容は提示していないので、わかりにくいですが、ご指摘頂ければ提示します。 設定や状態確認や見ておくべき点などが提案ベースでも教えて頂ければ幸いです。 すいませんがよろしくお願いします。
- PHP/MySQL レコードの件数の取得COUNT
ホームページを作っています。 レコードを検索したりカテゴリ別に絞り込んだりすることもできるようにしています。 レコードを閲覧しやすくするために、「前へ[0][1][2]次へ」のようなものをつけようとおもっています。 ところが、それをするためにはレコードの全ての数を取得しなければいけません。 全てのレコードを取得してそれからPHPの関数で件数を取得する方法もありますが、処理としてはスマートじゃないと思い、COUNT関数を使うべきなのかなと思いました。 なので、それで組んでみたんですけれど、カテゴリ別で絞り込むときに値が1にしかならないのです。 以下がソースです。 ※#musicNumに件数が入ります。 $textFilterの例「あつい」 $tags_forWhereの例「pop,dance」 $musicNum = mysql_query("SELECT COUNT(*) as cnt FROM contents_tags bt, mymusic b, tags t WHERE (b.number LIKE '%{$textFilter}%' OR b.title LIKE '%{$textFilter}%' OR b.text LIKE '%{$textFilter}%' ) AND bt.TAG_ID = t.ID AND (t.TAG IN ($tags_forWhere)) AND b.number = bt.CONTENT_ID GROUP BY b.number ORDER BY number DESC"); $musicNum = mysql_fetch_assoc($musicNum); $musicNum = $musicNum['cnt']; タグ機能はToxi法を使っています。 どこがおかしいのかご教授願いします。
- PHP/MySQL レコードの件数の取得COUNT
ホームページを作っています。 レコードを検索したりカテゴリ別に絞り込んだりすることもできるようにしています。 レコードを閲覧しやすくするために、「前へ[0][1][2]次へ」のようなものをつけようとおもっています。 ところが、それをするためにはレコードの全ての数を取得しなければいけません。 全てのレコードを取得してそれからPHPの関数で件数を取得する方法もありますが、処理としてはスマートじゃないと思い、COUNT関数を使うべきなのかなと思いました。 なので、それで組んでみたんですけれど、カテゴリ別で絞り込むときに値が1にしかならないのです。 以下がソースです。 ※#musicNumに件数が入ります。 $textFilterの例「あつい」 $tags_forWhereの例「pop,dance」 $musicNum = mysql_query("SELECT COUNT(*) as cnt FROM contents_tags bt, mymusic b, tags t WHERE (b.number LIKE '%{$textFilter}%' OR b.title LIKE '%{$textFilter}%' OR b.text LIKE '%{$textFilter}%' ) AND bt.TAG_ID = t.ID AND (t.TAG IN ($tags_forWhere)) AND b.number = bt.CONTENT_ID GROUP BY b.number ORDER BY number DESC"); $musicNum = mysql_fetch_assoc($musicNum); $musicNum = $musicNum['cnt']; タグ機能はToxi法を使っています。 どこがおかしいのかご教授願いします。
- ポート単位の通信確認の方法とは?
オンプレミス環境やクラウドなど問わないのですが、 個別にサーバを構築し、そのサーバ間の疎通確認を行う方法として確認したいことがります。 各サーバ間は、送受信する通信ポートは一意に指定して、それ以外のポート、指定外のプロトコルでの通信は破棄するように設定します。 その通信設定した内容が問題ないか、テストとしてどんなことをされてるんでしょうか? ICMPを許可していれば、ping試験ですが、TCPでの指定ポートのみの通信許可にしているので、不可かと思ってます。 設定例(1) Aサーバ→BサーバへのTCP ポート1000番のみ通信OKにしている。 設定例(2) Bサーバ→Aサーバは、レスポンスのみOKにしている といった感じになってます。 要点としては、 ポート指定して通信が通る確認の方法って何があり、どんな確認手段になりますでしょうか? telnetのポートしてでの確認もできるみたいなことがWEBにありましたが、結果どうなれば良いかまで良くわからず。 また、通信ができない試験も必要かと思いますが、そちらについてもアドバイスをお願いします。 経験が浅いので申し訳ないですが、お知恵を貸していただければと思います。 よろしくお願いします。
- カラム名の付け方について
このジャンルでお願いします。 例えば次のようなアカウント情報を格納するテーブルがあったとして CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(64), email varchar(64), password varchar(64), PRIMARY KEY(id) ); idカラム名を「id」か「user_id」にするか悩んでいます。 自分としては「id」のままで良いと思っているのですが、 参考書や他の方のやり方を見てると「user_id」のようにしてる方もいます。 「user_id」にすることによってSQL文を見た時にも何のidかすぐ分かるし、 USING句を使えるなどのメリットがあるのでたしかにこちらの方が良いかなぁとは思うのですが、 「user_id」にするなら統一性をもたせるために「name」も「user_name」にするのか、 「email」も「user_email」にするのか、などキリがないというか・・・ そういう理由もあって自分としては「id」のままなのですが、 みなさんはどちらのやり方をされているのでしょうか?
- 締切済み
- takagoo100
- MySQL
- 回答数2
- 選択日と終了日を配列で取得したい
phpでの質問です、初歩的で申し訳ないです。。 例えば。。 $startDay = "2014/10/8"; $endDay = "2014/11/26"; と開始日と終了日までの日にちを配列で取得したいと考えています。 自分的に調べてやってみたのが以下のソースになります。 $startDay = "2014/10/8"; $endDay = "2014/11/26"; //$endDay = date( "Y/m/d" , strtotime( $endDay ) ); // +1Day // 開始日から終了日までを配列で取得 list( $sYear , $sMonth , $sDay ) = explode( "/" , $startDay ); list( $eYear , $eMonth , $eDay ) = explode( "/" , $endDay ); $sUnix = mktime( 0 , 0 , 0 , $sMonth , $sDay , $sYear ); $eUnix = mktime( 0 , 0 , 0 , $eMonth , $eDay , $eYear ); $oneDay = 86400; for( $i = $sUnix; $i <= $eUnix; $i += $oneDay ){ $keyDate[] = date("Y/m/j",$i); } var_dump($keyDate); これでほぼほぼ取得できているんですが、 array(50) { [0]=> string(9) "2014/10/8" [1]=> string(9) "2014/10/9" [2]=> string(10) "2014/10/10" [3]=> string(10) "2014/10/11" [4]=> string(10) "2014/10/12" [5]=> string(10) "2014/10/13" [6]=> string(10) "2014/10/14" [7]=> string(10) "2014/10/15" [8]=> string(10) "2014/10/16" [9]=> string(10) "2014/10/17" [10]=> string(10) "2014/10/18" [11]=> string(10) "2014/10/19" [12]=> string(10) "2014/10/20" [13]=> string(10) "2014/10/21" [14]=> string(10) "2014/10/22" [15]=> string(10) "2014/10/23" [16]=> string(10) "2014/10/24" [17]=> string(10) "2014/10/25" [18]=> string(10) "2014/10/26" [19]=> string(10) "2014/10/26" [20]=> string(10) "2014/10/27" [21]=> string(10) "2014/10/28" [22]=> string(10) "2014/10/29" [23]=> string(10) "2014/10/30" [24]=> string(10) "2014/10/31" [25]=> string(9) "2014/11/1" [26]=> string(9) "2014/11/2" [27]=> string(9) "2014/11/3" [28]=> string(9) "2014/11/4" [29]=> string(9) "2014/11/5" [30]=> string(9) "2014/11/6" [31]=> string(9) "2014/11/7" [32]=> string(9) "2014/11/8" [33]=> string(9) "2014/11/9" [34]=> string(10) "2014/11/10" [35]=> string(10) "2014/11/11" [36]=> string(10) "2014/11/12" [37]=> string(10) "2014/11/13" [38]=> string(10) "2014/11/14" [39]=> string(10) "2014/11/15" [40]=> string(10) "2014/11/16" [41]=> string(10) "2014/11/17" [42]=> string(10) "2014/11/18" [43]=> string(10) "2014/11/19" [44]=> string(10) "2014/11/20" [45]=> string(10) "2014/11/21" [46]=> string(10) "2014/11/22" [47]=> string(10) "2014/11/23" [48]=> string(10) "2014/11/24" [49]=> string(10) "2014/11/25" } なぜか、2014/10/26が二つ出現してしまいます。 ソースを良く見ても原因が分からないのと、他の方法があればご教授いただきたいです。 よろしくお願いいたします。
- ベストアンサー
- paranoaman
- PHP
- 回答数2
- scriptについて
scriptについて質問です。 下記のソースでエクセルをブラウザ上に表示させたいのですが、 動いてくれません、どこか違うのかを教えていただきたいです。 以上、お願いします。 「ソース」 function aaa() { var excelApp = new ActiveXObject("Excel.Application"); excel.Workbooks.Open("C:\Users\satou\Desktop\weekreport.xls"); } <input type="button" value="エクセル確認" onClick="aaa();" />
- 締切済み
- sadoxu
- JavaScript
- 回答数3
- 閉包テーブルのノードの移行について
このジャンルでお願いします。 次のようなテーブルで CREATE TABLE IF NOT EXISTS item ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(32) NOT NULL, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO item (name) VALUES ('item1'); INSERT INTO item (name) VALUES ('item2'); INSERT INTO item (name) VALUES ('item3'); INSERT INTO item (name) VALUES ('item4'); INSERT INTO item (name) VALUES ('item5'); INSERT INTO item (name) VALUES ('item6'); CREATE TABLE IF NOT EXISTS treepath ( ancestor_id int(11) NOT NULL, descendant_id int(11) NOT NULL, FOREIGN KEY (ancestor_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (descendant_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY(ancestor_id, descendant_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 1); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 2); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 3); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 4); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 5); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (1, 6); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 2); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 4); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 5); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (2, 6); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (3, 3); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (4, 4); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (4, 6); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (5, 5); INSERT INTO treepath (ancestor_id, descendant_id) VALUES (6, 6); item1┬item2 │ ├item4 │ │ └item6 │ └item5 │ └item3 を item1┬item2 │ │ │ └item5 │ └item3 └item4 └item6 のようにitem4以下のノードをitem3の下に移したいのですが、 その場合のtreepathテーブルの更新はどのようなSQL文にすれば良いのでしょうか?
- ベストアンサー
- takagoo100
- MySQL
- 回答数4
- AWS別インスタンス内のMySQLデータ移行
AWSにあるデータベースをまるごと移行する場合、ローカルにエクスポートしないで移行できる方法があれば教えてください。 AWSは別アカウント、別インスタンスとなります。 よろしくお願いします。
- ユニークアクセスは何を見て判断している?
PHPでアクセスカウンターを作ろうとしています。 単純にページを表示したらカウントされるようなものは簡単に作れるんですが、一人につき一日1カウントというようなユニークアクセスは、いったい何を見て判断すれば良いのでしょうか? パソコンだったら今はプロバイダもほぼIPアドレス固定ですからそれをりようできるんですが、スマホとか携帯電話や、パソコンでも公衆無線LANとかポケットWi-Fiなんかを利用してると、繋ぎ直すたびにIPアドレスが変わるので使えませんよね? クッキーを使う? でも、たかがカウンターのためにクッキーを埋め込んでも良いんでしょうか?(^_^; いったい、世のアクセスカウンターは、どうやってユニークアクセスをカウントしてるんでしょうか?
- ベストアンサー
- noname#235729
- PHP
- 回答数4
- リンクのラベルを取得したい
教えてください。 <a href="リンクしたいページのURL#ラベル名">リンク文字列</a> このような書き方がありますよね。 リンク先で、#以下のラベルを取得したいのですが どうすればいいのでしょうか? $_GETでは取得できなかったのですが・・・。 ラベルにより、いろいろ処理を分けたいのです。 よろしくお願いします。
- ベストアンサー
- angelinaane
- PHP
- 回答数4
- なぜsudo出来ないのか
KnoppixというOSで、ある命令abc(仮定)を実行するとき、どうやら”スーパーユーザー”である必要があるとのことで、ネットを参照してsudoしましたが、以下の結果となりました。 $ sudo abc [sudo] password for xxx: xxx は sudoers ファイル内にありません。この事象は記録・報告されます。 このpasswordには、OSた立ち上げる時のパスワードを使いました。 他にはパスワードはありません。 どうしてこうなるのでしょうか。また、回避方法はありますか。 同じKnoppixでも、数世代前ではルートユーザーというのがありました。現OSでは無いようです。
- チェックボックスのチェック済みを保持
PHPを使ってフォームのチェックボックスの初期値にチェック済みでページを表示させ、そのチェックを外してサブミットし、同ページにリロードした際、セッションを使ってチェックを外した状態を保持しようとしているのですがうまくいきません。 チェックを外した状態でリロードしてもチェックがついた状態で表示されてしまいます、チェックを外した状態を保持表示させるにはどのように記述すればよいのでしょうか ご教授宜しくお願いします。 【PHP】 session_start(); $event = $_POST[ 'event' ]; $_SESSION[ 'event' ] = $event; if(!empty($event)){ $event_on = 'checked';} 【フォーム】 <form action="./" method="post" name="chbox"> <input type="checkbox" name="event" id="event" value="event" $event_on >イベント <button class="btn" onClick="boxCheck()" >表示</button> </form> 環境 php5.3 html5 javascriptのlocalStrage等を使ったほうが実装が現実的なら、検討いたします。
- 別々のテーブルで共通のid使う
一つのページから別々のテーブルにデータをINSERTしたいのですが、"id"と"number"は同じ値でそれぞれのテーブルにいれたいのですが、どうやってやるのでしょうか? 下のPHPのコード(一部)でデータを流してみたのですが、このままやると、もしデータに不具合があって片方だけ登録されないことがあると、一方は登録されて、一方は登録されないという事態が発生してしまい、"id"が違う番号で登録されてしまう可能性があります。 id int(8) NOT NULL AUTO_INCREMENT で"id"は作りました! $insertSQL1 = sprintf("INSERT INTO tbl1 (id, number, name, price) VALUES (%s, %s, %s, %s)", GetSQLValueString($_POST['id'], "int"), GetSQLValueString($_POST['number'], "text"), GetSQLValueString($_POST['name'], "text"), GetSQLValueString($_POST['price'], "int")); $insertSQL2 = sprintf("INSERT INTO tbl2 (id, number, ename, eprice, extra) VALUES (%s, %s, %s, %s, %s)", GetSQLValueString($_POST['id'], "int"), GetSQLValueString($_POST['number'], "text"), GetSQLValueString($_POST['ename'], "text"), GetSQLValueString($_POST['eprice'], "int"), GetSQLValueString($_POST['extra'], "text")); 別々のテーブルで共通のidを使う方法はないでしょうか? phpMyAdminのSQLを使ってます。 回答よろしくおねがいします!
- ベストアンサー
- soccerrlove
- MySQL
- 回答数4
- SQLのコマンドでif構文
PHPMyAdminのSQLのコマンドで、 もしdata001がNullだったら、data001に"1"というデータをいれる。 もしdata001がNullじゃないかつdata002がNullだったら、data002に"1"というデータをいれる。 このようなSQLのコマンドはどうやって打つのでしょうか。 回答よろしくおねがいします!
- ベストアンサー
- soccerrlove
- MySQL
- 回答数3
- プルダウンメニューに連動するチェックボックス(2)
こんにちわ。 先日下記の質問をさせていただき、yambejp様よりお答えを頂いきました。 直ぐに旨く行き大変助かりました。 http://okwave.jp/qa/q8844785.html ただ、もう一つ可能でしたら最初にある全選択可能な食べ物をなくして、 いきなり制限付きの生き物から始められるようにすることは出来るのでしょうか? 食べ物のような大枠を無くして、生き物、果物、穀物のような小枠のみで構成できたらと考えております。 可能でしたらどなたかご教授頂けると助かります。 何卒よろしくお願いいたします。
- ベストアンサー
- hanayona
- JavaScript
- 回答数1
- SQLのコマンドでif構文
PHPMyAdminのSQLのコマンドで、 もしdata001がNullだったら、data001に"1"というデータをいれる。 もしdata001がNullじゃないかつdata002がNullだったら、data002に"1"というデータをいれる。 このようなSQLのコマンドはどうやって打つのでしょうか。 回答よろしくおねがいします!
- ベストアンサー
- soccerrlove
- MySQL
- 回答数3
- PHPで値を保持する方法
PHPで、リクエストをまたいで値を保持する方法を教えてください。というかサーバー起動時に1回処理をし、その情報を使い続ける方法といった方が適切かもしれません。「リクエストをまたいで」といってしまうと、反射的に「セッションに保存」といいたくなると思いますが、そういう話ではありません。 画面上に検索条件でSELECTリストを表示します。この情報を今は、画面表示のたびに毎回DBにアクセスしデータを取得しています。 しかしサーバーが起動している間程度の期間ではめったに変更することはない値なので、リクエストのたびにDBにとりに行くのがあまりにも無駄なので、これをやめたいと思っています。かといって年に何回かは変更があってもおかしくない値なので、そのたびにプログラムを変更するのではなく、あくまでもDBのデータの変更だけで済ませたいと思っています。 つまり、リクエストのたびにDBにとりに行くのではなく、PHPのプログラムファイルにハードコーディングするのでもなく、Webサーバーが起動したときに1回だけDBから読み込み、変数に保持しておき何度も使いまわしたいと思っています。 で、ためしにclassのstatic変数に値を設定してみたのですが、リクエストのたびに値が初期化されてしまいました。$GLOBALSに値を設定してもリクエストのたびに値が初期化されてしまいました。 Javaなどの言語では、当たり前に行う処理ですがPHPで実現する方法が分かりません。 PHPで、リクエストをまたいで値を保持する方法を教えてください。 もしかするとPHPでは、値を保持することはできないのでしょうか? もしそうだとすると、PHPでは同じ値をDBから何度も取得するケースではどのように対処しているのでしょうか?(DBのキャッシュ機能頼み?そもそもPHPは小規模しか扱わないから気にしない?) この点について教えてください。 よろしくお願いします。
- PHPで値を保持する方法
PHPで、リクエストをまたいで値を保持する方法を教えてください。というかサーバー起動時に1回処理をし、その情報を使い続ける方法といった方が適切かもしれません。「リクエストをまたいで」といってしまうと、反射的に「セッションに保存」といいたくなると思いますが、そういう話ではありません。 画面上に検索条件でSELECTリストを表示します。この情報を今は、画面表示のたびに毎回DBにアクセスしデータを取得しています。 しかしサーバーが起動している間程度の期間ではめったに変更することはない値なので、リクエストのたびにDBにとりに行くのがあまりにも無駄なので、これをやめたいと思っています。かといって年に何回かは変更があってもおかしくない値なので、そのたびにプログラムを変更するのではなく、あくまでもDBのデータの変更だけで済ませたいと思っています。 つまり、リクエストのたびにDBにとりに行くのではなく、PHPのプログラムファイルにハードコーディングするのでもなく、Webサーバーが起動したときに1回だけDBから読み込み、変数に保持しておき何度も使いまわしたいと思っています。 で、ためしにclassのstatic変数に値を設定してみたのですが、リクエストのたびに値が初期化されてしまいました。$GLOBALSに値を設定してもリクエストのたびに値が初期化されてしまいました。 Javaなどの言語では、当たり前に行う処理ですがPHPで実現する方法が分かりません。 PHPで、リクエストをまたいで値を保持する方法を教えてください。 もしかするとPHPでは、値を保持することはできないのでしょうか? もしそうだとすると、PHPでは同じ値をDBから何度も取得するケースではどのように対処しているのでしょうか?(DBのキャッシュ機能頼み?そもそもPHPは小規模しか扱わないから気にしない?) この点について教えてください。 よろしくお願いします。
- プルダウンメニューに連動するチェックボックス
はじめまして。 よろしくお願いいたいます。 以前、こちらに質問として挙がっておりましたプルダウンメニューに連動するチェックボックスのdisable切り換えにつきまして。 http://okwave.jp/qa/q2928590.html 上記のアドレスの内容で設置した場合に、チェクを変更するときに最初にチェックしたものをリセットすることは可能でしょうか? 例えば 一度 食べも お米とりんごをチェック後に再度やり直したいとして、 二度目に 食べ物以外を選択した場合(生き物など)に上記のお米とリンゴのチェックをリセットして、全てのチェックを外したいのですがそんな便利なことが可能でしょうか? 可能でしたらどなたかご教授頂けると助かります。 何卒よろしくお願いいたします。
- ベストアンサー
- hanayona
- JavaScript
- 回答数1