SELECT文の小数点の乗算で変な挙動になってつまづいたのでメモ。 バージョン:mysql Ver 14.14 Distrib 5.6.23, for linux-glibc2.5 (x86_64) using EditLine wrapper テーブル CREATE TABLE hoge (id varchar(5), group_id varchar(5), value double); INSERT INTO hoge (id, group_id, value) VALUES ('A1', 'A', 0.0001234567); INSERT INTO hoge (id, group_id, value) VALUES ('A1', 'A', 0.0001111111); INSERT INTO hoge (id, group_id, value) VALUES ('A1', 'B'
MySQLでの「Access denied for user ‘root’@’localhost’ (using password: NO) 」への対処 MySQLをインストールした直後に、私も遭遇しましたが、rootユーザの権限設定がされていなく、下記のようなエラーが発生することがあるようです。 [root ~]# mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) ここでは、その場合の対処方法を整理しておきます。 1.MySQLの停止 MySQL(mysqld)が稼働している場合には、一旦停止します。 [root ~]# service mysqld stop mysqld を停止中: [ OK ] 2.オプション付きで起動 MySQLを–ski
つかこれ前はまったことあったはずなのに、久々にサーバのインストールやってたらまたちょいはまった。configureオプションに --with-mysql をつけると、PHPでMySQLが使えるようになるのは当たり前ですが。 yum -y install mysql でインストールしたMySQLではダメでした。エラーがでます。configureの時に。 cannot find MySQL header files under yes ってやつがね。 yum -y install mysql-devel にしましょう。めでたしめでたし。 知ってましたよ。知ってたよ。笑 追記ね。独り言ね。 ソースからコンパイルするからこうなるんだけど、PHPすらパッケージでインストールするとどうなるの?このときMySQLがdevelじゃない場合は自動なのかな? 試してないけど今度試そう。 ああ、こんなことではま
■ このような場合に参考にして下さい MySQLのクライアントソフト(mysql,PHP,Perl他)からMySQLサーバーに接続しようとすると 「Can't connect to local MySQL server through socket '/tmp/mysql.sock'」 のようなエラーが出て接続に失敗する。 ■ 対処方法の前に まずはじめに、エラーメッセージは次の意味を持ちます。 「ソケット'/tmp/mysql.sock'を通じてローカルのMySQLサーバーに接続することが出来ません」 ソケットとはプロセスやネットワーク間の通信機構のことで、MySQLではこのソケットを通じて サーバーとクライアントとが接続されます。ソケットというとポート番号を指定して利用する方法が 思い浮かびますが、ここでは/tmp/mysql.sockというファイルが出てきています。 これはUNIXド
MySQLで使っているデータベースを表示する。 mysql> select database(); +------------+ | database() | +------------+ | mydb | +------------+ 1 row in set (0.00 sec) MySQLでテーブルの作成 CREATE TABLE mytable ( contact_id INT NOT NULL AUTO_INCREMENT, last_name varchar(30) default NULL, first_name varchar(20) default NULL, email varchar(50) default NULL, gender char(1) default NULL, interests varchar(100) default NULL, PRIMARY K
MySQL起動エラー1067 昨日まで動いていたのに・・・ということは昨日いじったところを疑います。 昨夜、以下の行をmy.iniに追加したのでこれかな。 default-character-set = utf8 ↓ #default-character-set = utf8 とコメントアウトしてみたらあっさり起動しました。 skip-character-set-client-handshakeも含めて状況変わらず。 環境:WindowsVista + xampp1.7.4 取得した値は、画面は正常です。phpMyAdminでみると文字化けしてたのでちょっと確認してみたかっただけです。画面は正常なのでとりあえずヨシということにしておきます。 追記 表示はOKだったのですが、order by でうまいこといっていない。要調査。 さらに追記(解決) 初歩的なミスでした。 [mysqld]セクシ
レンタルサーバが高い上に、サイトが人気なくてAWSのt.microに移した方がよいと思ったのでdrupalを移行中。 そんで、早速 phpmyadminからsqlファイルでexportしたものをawsにインポートしようとしたら以下のエラーが。 >sudo mysql -u <userid> -p<password> <dbname> < <file>.sql ERROR 2006 (HY000): MySQL server has gone awayいろいろと調べると、一時メモリ不足らしい。 でmy.cnf(/etc/my.conf)に以下を設定後、mysql再起動後(sudo /etc/init.d/mysqld restart)もう一回トライしたが解決せず。 max_allowed_packet=100Mそして、以下のコマンドで、パラメータを見てみたら反映されておらず。 mysql>
こんなエラーが出たときは、 ERROR 1205 (HY000) at line 2: Lock wait timeout exceeded; try restarting transaction 他のスレッドが保持しているロックをinnodb_lock_wait_timeout秒間待っても獲得出来なかった場合に発生する。 デッドロックとは違うみたいね。 まあ、これが出たときは他に動いている処理がないかどうかを確認した上で再実行かな。 基本的に、 MyISAM:表ロック InnoDB:行ロック だが、InnoDBでも表ロックする場合がある。 例えばUPDATE文のWHERE句で、 ・UNIQUE制約 or indexが貼られているカラムを指定した場合は => 行ロック ・上記以外のカラムを指定した場合は => 表ロック となる。
SELECTなのにテーブルにロックが掛かる!〜InnoDBトランザクションにおけるINSERT INTO SELECT FROMの罠〜 カテゴリ : 技術全般 2010-10-14 19:37 MySQLのInnoDBはトランザクションが使えたり、行ロックが使えたりして、データの整合性の点でMyISAMに比べて優れています。 業務系アプリになると、データの整合性が重視されることも多く、トランザクションを使うことも増えます。 今回、そのトランザクションを使っていて、思いもよらないクエリがきっかけで、テーブルにロックが掛かってハマりました。 テーブル構造はこのような感じ...。 CREATE TABLE `working` ( `id` int(11) NOT NULL AUTO_INCREMENT, `col` int(11) NOT NULL DEFAULT '0', PRIMARY K
整合性をしっかりとらないといけない処理ではトランザクションをかけるのですが、どうもトランザクションのロック待ちでタイムアウトしてしまうことがあるようです。 java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction トランザクションでテーブル全体にロックがかかってしまう 要するに、「トランザクションを実行するためにロックを獲得しなければいけないが、他のコネクションがロックを握っていて、ロックが獲得できない」ということです。 これの根本的な原因は何かと調べますと、InnoDBでトランザクションを使用するときに、行ロックではなく、テーブル全体にロックがかかってしまう場合がある、というところにたどり着きました。 「InnoDBで行ロック/テーブルロックになる条件」を見ながら、少し試してみます。 テーブ
背景 大きなテキストデータを登録しようとした際、エラー発生。 SQLSTATE[HY000]: General error: 2006 MySQL server has gone away データ型は LONGTEXT。入れようとしているデータは1.7M程度。 解決手順 my.cnf→max_allowed_packetを変更します。 現状確認 デフォルト値は1M。 mysql> show variables like 'max_allowed_packet'; +--------------------+---------+ | Variable_name | Value | +--------------------+---------+ | max_allowed_packet | 1048576 | +--------------------+---------+ 1 row in
こんにちは。 職人見習いの櫛田です。 MySQLのバグのようでLOAD DATA INFILE文でcsvを追加でインポートした時にAUTO_INCREMENTが連番にならず、インポートしたレコード数にもよりますが、数百番飛んだ値になっていました。 そこで、連番になるようにAUTO_INCREMENTの値を指定して対応しました。 (※MySQLを再起動すれば、連番になるようです。) ○CSVのインポート 20111130.csvというファイルをインポートします。 LOAD DATA LOCAL INFILE "/home/hoge/20111130.csv" INTO TABLE dbname.tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'rn' IGNORE 1 LINES (@a,@b,@c
魔境のコード解析してた Django 側では models.CharField で 255 まではいるようにしたフィールドをたくさん用意しておいて、それを適宜 int や string や boolean や datetime で擬似的に処理をするというちょっと複雑なフィールドがあるのだけど(まあちょっと慣れたらそういうシステムはありそうだが)、そこで不正なデータ(boolean でいれるべきフィールドに文字列をいれている)であることはわかっていたが、しかしなぜこのエラーがでるかわからなかった。エラーの意味自体は「このカラムにはいりきらないから切り詰めていれておいたよ」というものだけど、それが Django 側ではエラーとして落としてしまっているようだった。 結局これは2段階のフィールド設計になっていて、「一時的に登録するフィールド→正式に登録するフィールド」というのが用意してあった。その
こんな感じで ~~~ mysql> ALTER TABLE table_name drop INDEX idx_id; Cannot drop index ‘idx_id’: needed in a foreign key constraint ~~~ と出てしまい、indexが削除出来ません。 どうやら外部キーが影響しているみたいです 外部キーの確認 ~~~ mysql> SHOW CREATE TABLE table_name; —- 省略 —- CONSTRAINT `table_name_ibfk_1` FOREIGN KEY (`id`) REFERENCES `foreign_table` (`id`) ON DELETE CASCADE ON UPDATE CASCADE —- 省略 —- ~~~ 多分こいつが原因ですね あとで戻さなきゃ行けないのでコピっておきます 外部キー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く