動かざることバグの如し

近づきたいよ 君の理想に

【MySQL】Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENTと出る

MySQLアップデートするとOwncloudが動かない。

おかしいと思って見ると以下の様なエラーが出てた。

An exception occurred while executing 'INSERT INTO `oc_users` ( `uid`, `password` ) VALUES( ?, ? )' with params ["user", "*************************"]: SQLSTATE[HY000]: General error: 1665 Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.

General error: 1665

原因はわからないけど、/etc/mysql/my.cnfmysqld欄に以下を追記

binlog-format = MIXED

で再起動したら直った

【Raspi】Cronが実行されない場合の対処法

環境

  • Raspberry Pi 2
  • RASPBIAN JESSIE LITE Release date:2016-05-10

cron書いても実行されない

書式間違ってるのと思って何度も確認したけど改善しなかった

原因

ふと/var/log/syslogを見てみると大量の失敗ログがあるではないか!

May 29 22:49:01 raspberrypi CRON[22648]: (pi) CMD (/bin/bash -lc 'cd /home/pi/hoge && bundle exec ruby save.rb')
May 29 22:49:01 raspberrypi CRON[22644]: (CRON) info (No MTA installed, discarding output)

No MTA installed, discarding output

どうもデフォルトでMTAがインストールされていないらしく、postfixをインストールする必要がある

sudo apt-get install postfix

最初っからいれとけよこんなもん>Raspi

【Ruby】bundleコマンド叩くとbad interpreter: No such file or directoryとエラーになる件

発端

rubyで開発する際にbundleコマンド使うじゃないですか、bundle installとかにつかうアレ。

あれをRaspberry Piで使おうとしたら

pi@raspberrypi:~ $ /bin/bash -lc 'cd /home/pi/hoge && bundle exec ruby save.rb'
/bin/bash: /usr/bin/bundle: /usr/bin/ruby: bad interpreter: No such file or directory

ってエラーになって使えない。

インストールしてみる

どうやらRubyはrbenv経由で正しくインストールできてるっぽいけど、bundlerが入ってなかったぽい

gem install bundler

こうすると使える が、 再起動したりSSHだとログアウトするとまた使えなくなる

対処

rbenv global 2.3.0 #各自のバージョン
rbenv rehash

~/.bash_profileに以下追記

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

これで一応ログアウトしてもできるようになったけどもうちょっとこの辺の仕組み理解しないとまずいなぁ

【MariaDB】インストールから外部から接続までの設定

環境

インストール

公式サイト見ればクッソ丁寧に書いてあるからそれ見ような(投

Downloads - MariaDB

初期設定

まずはダルい文字コード問題を解決すべく、すべてのDBをUTF-8にして、外部からの接続を許可する

/etc/mysql/my.cnf の以下を修正

[client]
(追記)
default-character-set=utf8

[mysqld]
(追記)
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

(コメントアウト)
# bind-address = 127.0.0.1

設定反映

service mysql restart

ログインして、ちゃんとエンコード設定できているか確認

show variables like 'character_set%';

以下のように表示されればおk

MariaDB [(none)]> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

ユーザーの作成

GRANT ALL PRIVILEGES ON *.* TO thr3a@'%' IDENTIFIED BY 'パスワード' WITH GRANT OPTION;