MySQL

全4809件中341~360件表示
  • MySQLのrootのパスワードを忘れてしまった

    PCに数年前に導入したMySQLのrootのパスワードを忘れてしまいました。 どこかに書いておいたはずなのですが、思い出せません。 rootのパスワードを調べる方法、または不明のまま新しいパイワードに変更する方法はあるでしょうか。

  • データベースのデータ型に関しまして

    現在、レンタルしているサーバのPHPmyAdminにて、データベースを作成しました。 データベースのエンジンはMyISAMになっており、InnoDB型がいいため、 テーブルの作成時にInnoDB型に設定をしました。 すると、構造タブでみるとデータベース:MyISAM テーブル:InnoDB となっておりますが、テーブルはInnoDBとして扱われているという認識でいいのでしょうか。 勉強中のため、詳しい方がおりましたら、教えていただけると助かります。

    • ベストアンサー
    • noname#202682
    • MySQL
    • 回答数1
  • SELECT時の行ロックの必要性について

    SELECT ~ FOR UPDATEやSELECT ~ LOCK IN SHARE MODEという行ロックがあり、この件について解説しているサイトをいろいろ見ているのですが、振る舞いが複雑だということはわかりました。 しかしそもそもなぜSELECTで行ロックするのか、運用上でどんなときに使うのかを解説しているサイトは見当たりませんでした。 私は、SELECTするときは単に SELECT * FROM tb_a WHERE id = 1; としか記述していません。 質問1. なぜSELECTするのにトランザクションが必要なのでしょうか?運用上でどんなときにSELECTでトランザクションを使うのでしょうか?よく解説サイトには、 BEGIN; SELECT * FROM tb_a WHERE id = 1 FOR UPDATE; COMMIT; と書いています。SELECTするのに行をロックする必要性がいまいちわからないです。 質問2. トランザクションを開始したときにロックがかかるのではないのでしょうか?つまりBEGIN;でロックがかかるわけではないのですか?SELECTのクエリーにFOR UPDATEと書くということはこのSELECTのコードが実行された時点でロックがかかるのでしょうか? 質問3. FOR UPDATEやLOCK IN SHARE MODEというのはSELECTにしか使えないのか、もしくはSELECTだから意味があるのでしょうか?UPDATEやDELETEは単にBEGINE;とCOMMIT;で囲えばいいだけですよね? 質問4. 以下のようなコードを解説しているサイトがあります。 BEGIN; SELECT * FROM tb_a WHERE id = 1; COMMIT; SELECT文にはFOR UPDATEも書いていないのですが、これは何を意味するのでしょうか?つまり、SELECTするのになぜトランザクションを実行するのでしょうか? 一番知りたいのは運用上どのような場合にSELECTでトランザクションを使って行ロックするのか、ということです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • suffre
    • MySQL
    • 回答数4
  • MySQLの指定日付に関連するデータをSELECT

    MySQLにて以下のようなデータを扱っているのですが、 ------------------------------ | id | start | end | ------------------------------ | 1 | 2014-10-14 | 2014-10-14 | | 2 | 2014-09-20 | 2014-10-10 | | 3 | 2014-10-20 | 2014-11-31 | | 4 | 2014-10-15 | 2014-10-16 | | 4 | 2014-09-15 | 2014-09-16 | ------------------------------ SQLで 開始:2014-10-01 から 終了日:2014-10-31 の間に関わるデータを引っ張れないかと試行錯誤しております。 上のデータですと 1,2,3が引けると良いのですが、、、 BETWEEN を使ってしまうと、その間にあるデータしかひっぱれず。。

  • phpでnot null、a_iでテーブル作成

    PHPで、以下のようなソースで、存在しているデータベースtestに接続し、もしない場合、name_listというテーブルを作り、1カラム目をカラム名がnoで、int型でnot null auto_incrementにして、2カラム目をカラム名がnameで、not nullで作りたいのですが、うまくテーブルが作られません。 どうすればうまく作られるか教えてください。 <?php try{ $pdo = new PDO('mysql:dbname=test; host=localhost; charset=utf8', 'root'); $st = $pdo->prepare("create table if not exists name_list (no int(100) not null auto_increment, name varchar(100) not null);"); $st->execute(); }catch(PDOException $e){ print('Error:'.$e->getMessage()); die(); }

    • ベストアンサー
    • h_mp
    • MySQL
    • 回答数5
  • phpでのmysqlのあるテーブルの有無の判定方法

    phpでmysqlのあるテーブルがない場合、テーブルを作るというのをやりたいのですが、テーブルがあるかないかの判定はどういう風に行えばいいでしょうか。 データベースは存在していて、pdoでmysqlを操作したいと考えています。

    • ベストアンサー
    • h_mp
    • MySQL
    • 回答数1
  • ドメインとサーバーの勉強について

    独自ドメインを取得し、Wordpressサイトを開こうと考えておりますが、分からないことがたくさんある上、自分が何を知らないのかも知らないので難儀しております。 1. ドメインをGodaddyなどの会社から取得し、それをdreamhostなどのレンタルサーバーにアップロードしたWordpressに使うにはどうしたらいいのか? 2. htaccessやアパッチなどの設定(gzipやキャッシュなど)など、HTMLやCSSなどのプログラミング言語ではない、重要なウェブサイト運営の知識 3. ページの表示速度を早くするために、gzipをOnにすべきか、bpsは十分かなどの設定可能なオプションと測定方法など 4. その他ここに挙がっていないけれど、wordpressサイトを運営する上で重要なこと を知識の漏れが内容に、体系的に学べられるサイトを探しております。 英語ができるので海外サイトでも結構です。 どなたかご助力ください。よろしくお願い申し上げます。

  • MySQLで0で検索できない

    以下のようなPHPのソースとMySQLのテーブルで、numberが0の行をhtmlで取得しようとしているのですが、検索窓に0を入れて検索しても取得できません。ちなみに、numberが1や2の行は取得することができます。 なぜnumberが0の行を取得できないかと、どうすればnumberが0の行を取得することができるか教えてください。 <PHPのソース> <?php $url = "localhost"; $user = "root"; $pass = ""; $db = "test"; $html = ""; // MySQLへ接続する $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); // データベースを選択する $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。"); // クエリを送信する $sql = "SELECT * FROM test"; $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); ?> <form action="" method="post"> <input type="text" name="numberSearch" value=""> <input type="submit" value="検索"> </form> <?php //表示するデータを作成 if($rows && !empty($_POST['numberSearch'])){ while($row = mysql_fetch_array($result)) { if ($row["number"] == $_POST['numberSearch']) { $html .= "<tr>"; $html .= "<td>".$row["alphabet"]."</td><td>".$row["number"]."</td>"; $html .= "</tr>\n"; } } }else{ $msg = "データがありません。"; } // MySQLへの接続を閉じる mysql_close($link) or die("MySQL切断に失敗しました。"); ?> <html> <head> <meta charset="utf-8"> <title>numberSearch</title> </head> <body> <table width = "200" border = "0"> <tr bgcolor="##ccffcc"><td>alphabet</td><td>number</td></tr> <?= $html ?> </table> </body> </html> <データベースのテーブル> alphabet number A 0 B 1 C 2 D 1 E 1 F 0 G 1

    • ベストアンサー
    • h_mp
    • MySQL
    • 回答数2
  • MySQLで、INSERT文でエラー

    下記のスクリプトで、MySQLサーバーのテーブルの中身を見ようとしたら、 返り値が空でした(行数0) ( クエリの実行時間 0.0010 秒 ) と表示されます。 どこが間違ってるのでしょうか。 ////////////////////// // データベース登録 // ////////////////////// $con = mysql_connect("mysql020.******", "*****", "*****"); // リモートのMySQLデータベースサーバーに接続する mysql_select_db("LAA0471050-ideamemo"); // データベースサーバーに存在する(myPHPAdminで作成済みの)データベースを選択する $sql = "SET NAMES utf8"; mysql_query($sql, $con); $sql = "INSERT INTO ideamemo_table (color, title, contents, create) VALUES ('$color', '$title', '$contents', '$create');"; mysql_query($sql, $con); mysql_close($con); ?>

  • データベース、テーブル設計についてです。

    現在、ブランドサイズをインターナショナルサイズに変換するデータベース設計をしていて悩んでいることがあります。どうか知恵をお貸しください。 参考にしています書籍は、ミック著「達人に学ぶDB設計徹底指南書」です。 書籍には、正規化の次数が低いほど検索SQLのパフォーマンスは良いですが、データ整合性は低く、正規化していくほどパフォーマンスが低下する代わりにデータ整合性が高くなります。と書いています。 ですので、正規化した結果、5つのテーブルが出来上がりました。 これらを正規化したテーブルを中間テーブルで扱うには、どのように設計すればよろしいでしょうか? 以上、よろしくお願いします。 下記は、正規化したテーブルです。 テーブル名 :: ブランド 扱うデータ :: (仮)A、その他ブランド.... テーブル名 :: 性別 扱うデータ :: メンズ、レディース、ユニセックス テーブル名 :: カテゴリー 扱うデータ :: ウェアー、ボトム、シューズ、その他カテゴリー.... テーブル名 :: ブランドサイズ 扱うデータ :: 1、2、3、その他ブランドサイズ.... テーブル名 :: インターナショナル・サイズ 扱うデータ :: S、M、L、その他サイズ....

  • 複数データのUPDATEに関して

    お世話になっております。 MySQLに保存している顧客データの処理について質問させてください。(MySQLとPHPでブラウザ経由でデータ管理をしています) 以下のようなテーブルがあり、顧客に対して配送するダイレクトメールの印刷をする流れのことです。 no  name  dm 1  佐藤  no 2  吉田 3  谷口 4  伊藤 まず最初にこのテーブルにある顧客を一覧で表示させますが、名前と共にチェックボックスを設け、 noという値が入っているレコードはチェックを入れて一覧表示します。 一覧表示の後、印刷表示というボタンを押すと、印刷用レイアウトの画面に移動し、印刷を実行という流れです。 dmというカラムは印刷をするか否かのフラグであり、noと代入されているか顧客は印刷しないことを意味しますが、 印刷前の確認が出来るようにするためであり、また印刷対象の変更を同時に行えるようにしたいと、このような流れになってます。 そこで質問なのですが、単純に一覧から印刷用ページに移動させるだけなら問題はないのですが、このチェックボックスのチェック、チェックを外したり、チェックを入れたりと、服すのチェックを一度に行い、印刷用ページに移動(ポスト)したとき、チェックの入ったデータだけ印刷一覧に表示したいと考えてます。 このとき、変更があった顧客のdmカラムをアップデートしたいのですが、どのような仕組みが一番負荷が少なくて住むのでしょうか? 現在の顧客数は1万5千件程度ですが、印刷用ページに移動した際、1つずつチェックをするのは非常に非効率ですし、かといって、元々チェックの入っていたデータと、印刷ページにポストしたとときのデータを共に違う配列に代入して・・・とも考えているのですが、効率のよい流れというものがなかなかイメージすることが出来ません。 お忙しいとは思いますが、お知恵を頂戴できれば幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • a4_chapp
    • MySQL
    • 回答数1
  • php mysqlのクエリでエラー

    「←追加」と追加したのですが、Warning: Invalid argument supplied for foreach()とエラーがでました。 調べたり、試行錯誤してみましたがダメでした。 何が間違っているのでしょうか? try{ $dbh = new PDO($dsn, $user, $password); print('接続に成功しました。<br>'); $dbh->query('SET NAMES utf8'); $sql = ('SELECT song.number, song.song_title, artist.artist, ka2.artist as artist_2, ka3.artist as artist_3, ka4.artist as artist_4, ka5.artist as artist_5, ka6.artist as artist_6, ka7.artist as artist_7, ka8.artist as artist_8, ka9.artist as artist_9, ka10.artist as artist_10, ka11.artist as artist_11, ka12.artist as artist_12, sakushi.sakushi, ss2.sakushi as sakushi_2, ss3.sakushi as sakushi_3, ss4.sakushi as sakushi_4, sakkyoku.sakkyoku, sk2.sakkyoku as sakkyoku_2, sk3.sakkyoku as sakkyoku_3, sk4.sakkyoku as sakkyoku_4, hennkyoku.hennkyoku, hk2.hennkyoku as hennkyoku_2, hk3.hennkyoku as hennkyoku_3, hk4.hennkyoku as hennkyoku_4, genre, gr2.genre as genre_2,←追加 tie_up, part FROM (((((((((((((((((((((((((((( song LEFT JOIN artist ON song.artist_1 = artist.artist_ID) LEFT JOIN artist ka2 ON song.artist_2 = ka2.artist_ID) LEFT JOIN artist ka3 ON song.artist_3 = ka3.artist_ID) LEFT JOIN artist ka4 ON song.artist_4 = ka4.artist_ID) LEFT JOIN artist ka5 ON song.artist_5 = ka5.artist_ID) LEFT JOIN artist ka6 ON song.artist_6 = ka6.artist_ID) LEFT JOIN artist ka7 ON song.artist_7 = ka7.artist_ID) LEFT JOIN artist ka8 ON song.artist_8 = ka8.artist_ID) LEFT JOIN artist ka9 ON song.artist_9 = ka9.artist_ID) LEFT JOIN artist ka10 ON song.artist_10 = ka10.artist_ID) LEFT JOIN artist ka11 ON song.artist_11 = ka11.artist_ID) LEFT JOIN artist ka12 ON song.artist_12 = ka12.artist_ID) LEFT JOIN sakushi ON song.sakushi_1 = sakushi.sakushi_ID) LEFT JOIN sakushi ss2 ON song.sakushi_2 = ss2.sakushi_ID) LEFT JOIN sakushi ss3 ON song.sakushi_3 = ss3.sakushi_ID) LEFT JOIN sakushi ss4 ON song.sakushi_4 = ss4.sakushi_ID) LEFT JOIN sakkyoku ON song.sakkyoku_1 = sakkyoku.sakkyoku_ID) LEFT JOIN sakkyoku sk2 ON song.sakkyoku_2 = sk2.sakkyoku_ID) LEFT JOIN sakkyoku sk3 ON song.sakkyoku_3 = sk3.sakkyoku_ID) LEFT JOIN sakkyoku sk4 ON song.sakkyoku_4 = sk4.sakkyoku_ID) LEFT JOIN hennkyoku ON song.hennkyoku_1 = hennkyoku.hennkyoku_ID) LEFT JOIN hennkyoku hk2 ON song.hennkyoku_2 = hk2.hennkyoku_ID) LEFT JOIN hennkyoku hk3 ON song.hennkyoku_3 = hk3.hennkyoku_ID) LEFT JOIN hennkyoku hk4 ON song.hennkyoku_4 = hk4.hennkyoku_ID) LEFT JOIN genre ON song.genre_1 = genre.genre_ID) LEFT JOIN genre gr2 ON song.genre_2 = gr2.genre_ID)←追加 LEFT JOIN tie_up ON song.tie_up_1 = tie_up.tie_up_ID) LEFT JOIN part ON song.part_1 = part.part_ID) ;');

  • SQL文作成についてお知恵をお貸しください

    ユーザーと商品のテーブル(省略)、 商品ジャンルテーブル、 genre id   name 1   家電 2   3万円台 3   テレビ 4   黒 5   SONY 6   三菱 商品とジャンルのリレーションテーブル、 item_genre item_id genre_id 1    1 1    2 1    3 2    1 2    3 2    4 2    6 ユーザーが希望する商品ジャンルのテーブル(ユーザーとジャンルのリレーションテーブル)、 user_genre user_id genre_id 1    1 1    3 2    1 2    3 2    4 3    1 3    3 3    4 3    5 以上があるとします。 この時に商品側から(商品IDを元に)、その商品を希望しているユーザーIDを取得する場合の SQL文の作成方法のご教示をお願いいたします。 上記のテーブルの例ですと、アイテム1から取得したいユーザーIDは1、アイテム2からは ユーザーID 1と2を取得できればOKです。 商品が持つジャンルIDが1,2,3に対してユーザーが希望するジャンルIDが1,3のように少ない 場合は対象にふくまれますが、商品が持つジャンルIDが1,3に対してユーザーが希望する ジャンルIDが1,3,4のように多くなる場合は対象に含めません。 色々と考えてみたのですが、頭がこんがらがってしまい迷宮に迷い込んでしまいました。 すみませんがお知恵をお貸しください。よろしくお願いします。 ※DBサーバーがMySQLのため、MySQLで実現できる方法だとありがたいです。

  • ●MySQLが急に停止する事について質問です。

    最近、しょちゅうMYSQLが急に、停止しkillして再起動しておりますが、 その度に、以下のログが記載がありますが、具体的な対策などご存知でしたらご教示下さい。 現在、./ibdata1 は、./ibdata1 と./ibdata1.bak にしております。 InnoDB: Unable to lock ./ibdata1, error: 11 InnoDB: Check that you do not already have another mysqld process InnoDB: using the same InnoDB data or log files. InnoDB: Shutdown completed; log sequence number 0 100570041 [Note] /usr/libexec/mysqld: Shutdown complete mysqld ended InnoDB: Error in opening ./ibdata1 141007 22:41:19 InnoDB: Operating system error number 11 in a file operation. InnoDB: Error number 11 means 'Resource temporarily unavailable'. InnoDB: Some operating system error numbers are described at InnoDB: http://dev.mysql.com/doc/refman/5.0/en/operating-system-error-codes.html InnoDB: Could not open or create data files. InnoDB: If you tried to add new data files, and it failed here, InnoDB: you should now edit innodb_data_file_path in my.cnf back InnoDB: to what it was, and remove the new ibdata files InnoDB created InnoDB: in this failed attempt. InnoDB only wrote those files full of InnoDB: zeros, but did not yet use them in any way. But be careful: do not InnoDB: remove old data files which contain your precious data! 141007 22:41:19 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use 141007 22:41:19 [ERROR] Do you already have another mysqld server running on por t: 3306 ? 141007 22:41:19 [ERROR] Aborting 141007 22:41:19 [Note] /usr/libexec/mysqld: Shutdown complete 141007 22:41:19 mysqld ended

  • AUTO_INCREMENTの空きデータ

    データベースに入っている値を見るとAUTO_INCREMENTされているIDなどが列の削除に空き(2の次が10のような)が存在しております。INT(10)に設定されているため、保管数の限界が存在します。こういうのを整頓(2の次は3)しなおすことはできるのでしょうか。 無知ですいませんが、教えていただけませんでしょうか。 組み合わせは、PHP+Mysqlです。

    • 締切済み
    • noname#202682
    • MySQL
    • 回答数2
  • MySQLの文字化け

    WindowsServerでPHPとMySQLで作成したプログラムを動かしています。 PHPからINSERTでMySQLに登録すると環境依存文字(「(株)・(有)など)が「?」になってしまいます。 PHPからSELECTでブラウザ上に表示させると文字化けはしていませんが、phpMyAdminで確認すると「?」になっています。 このデータベースの内容を他のサーバーに移すときに、phpMyAdminからエクスポートまたはmysqldumpすると「?」のままエクスポートして、他のサーバーでインポートしても当然「?」になってしまいます。 環境依存文字が文字化けしない、あるいは他のサーバーでも環境依存文字をそのまま移行できるようにはできないでしょうか。 よろしくお願いします。 PHPはEUC-JP、データベースはujisで作成しています。 INSERTの直前でSET NAMES UJISを実行しています。

    • ベストアンサー
    • hi18
    • MySQL
    • 回答数2
  • MySQLのストアドプロシージャについて

    MySQL5.6のストアドプロシージャが返すSELECT結果のフェッチ方法について教えてください。 delimiter $ create procedure sample_proc() begin select * from TEST_TBL; end$ の様なストアドプロシージャがあり、これを他のストアドプロシージャから呼び出して、 ループしながらフェッチしたいのですが、どうすればよいでしょうか。

  • 文字コード変更

    mysql> mysql> show variables like 'character_set%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | sjis | | character_set_connection | sjis | | character_set_database | sjis | | character_set_filesystem | binary | | character_set_results | sjis | | character_set_server | sjis | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql> mysql> character_set_systemもsjisに変更したいと考えております。 どのようにすれば可能でしょうか? やりたいことはmysqlworkbenchでselect文のクエリ内容を日本語表記することです。 ご存知の方、宜しくお願いします。

    • ベストアンサー
    • nikogoo
    • MySQL
    • 回答数1
  • ブラウザでデータベース操作の参考書

    ブラウザでデータベースを取り扱う方法を習得したいと考えています。 VMwareなどを使ってCentOSをインストールしたり MySQLのインストールはできるぐらいです。 FireFoxなどのブラウザで、MYSQLと連携したデータベースの基本を勉強するのに どのような本を勉強したらいいでしょうか? お勧めの本などあれば教えてください。 よろしくお願いします

  • トリガーについて

    このジャンルでお願いします。 次のようなテーブルで DROP TABLE IF EXISTS item; CREATE TABLE IF NOT EXISTS item ( id int(11) NOT NULL AUTO_INCREMENT, parent_id INT, name varchar(32) NOT NULL, level int NOT NULL, FOREIGN KEY (parent_id) REFERENCES item(id) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO item (parent_id, name) VALUES (null, 'item1'); INSERT INTO item (parent_id, name) VALUES (1, 'item2'); INSERT INTO item (parent_id, name) VALUES (2, 'item3'); INSERT INTO item (parent_id, name) VALUES (3, 'item4'); INSERT INTO item (parent_id, name) VALUES (2, 'item5'); INSERT INTO item (parent_id, name) VALUES (null, 'item6'); INSERT INTO item (parent_id, name) VALUES (6, 'item7'); INSERT INTO item (parent_id, name) VALUES (null, 'item8'); DROP PROCEDURE IF EXISTS UPDATE_LEVEL; DELIMITER // CREATE PROCEDURE UPDATE_LEVEL() BEGIN DECLARE CNT INT; DECLARE LVL INT; SET LVL=1; UPDATE item SET level=0; UPDATE item SET level=LVL WHERE parent_id IS NULL; SELECT COUNT(*) INTO CNT FROM item WHERE level=LVL; WHILE CNT>0 DO UPDATE item INNER JOIN (SELECT id FROM item WHERE level=LVL) as temp ON parent_id=temp.id SET item.level=LVL+1; SET LVL=LVL+1; SELECT COUNT(*) INTO CNT FROM item WHERE level=LVL; END WHILE; END // DELIMITER ; DROP TRIGGER IF EXISTS TRG_INSERT_ITEM; DELIMITER // CREATE TRIGGER TRG_INSERT_ITEM AFTER INSERT ON item FOR EACH ROW BEGIN CALL UPDATE_LEVEL(); END; // DELIMITER ; itemテーブルにinsertした場合にトリガーでUPDATE_LEVEL()を実行するようにしているのですが、 実際に挿入すると、 >Can't update table 'item' in stored function/trigger because it is already used by statment which invoked this stored function/trigger . このようなエラーが出てしまいます・・・ UPDATE_LEVEL()にinsertらしき記述はないと思うのですが、 これはなぜこのようなエラーが出るのでしょうか?