【mysql】Row size too large (> 8126) のエラー対処法

mysql で update を実行した際、以下のエラーが出た

-------------------------------------------------
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.
-------------------------------------------------

ROW_FORMATが「Compact」のときに、8126バイト以上のレコードを入力しようとすると出るエラーらしい。

ターミナルの mysql から現在の ROW_FORMAT を確認

-------------------------------------------------
use データベース名 ← データベースを選択

SHOW TABLE STATUS LIKE 'テーブル名'\G
-------------------------------------------------

出力結果
*************************** 1. row ***************************
Name: テーブル名
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 35155
Avg_row_length: 4583
Data_length: 161136640
Max_data_length: 0
Index_length: 0
Data_free: 6291456
Auto_increment: 46319
Create_time: 2018-03-09 16:18:39
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)

Row_format の Compact の部分を、DYNAMIC か COMPRESSED に変更すれば消えるらしい。で、変更するには innodb_file_format が Barracuda になっていないといけない。

innodb_file_format を確認

-------------------------------------------------
mysql> SHOW GLOBAL VARIABLES LIKE '%innodb_file_%';
-------------------------------------------------

出力結果
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Antelope |
| innodb_file_format_check | ON |
| innodb_file_format_max | Antelope |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)

innodb_file_format が Antelope なので Barracuda に変更する必要がある。

my.cnfを編集
-------------------------------------------------
vim /etc/my.cnf
-------------------------------------------------

[mysqld]以下に追記
-------------------------------------------------
[mysqld]
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
-------------------------------------------------

service mysqld restart で再起動

変更を確認
mysql> SHOW GLOBAL VARIABLES LIKE '%innodb_file_%';
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_file_format | Barracuda |
| innodb_file_format_check | ON |
| innodb_file_format_max | Barracuda |
| innodb_file_per_table | ON |
+--------------------------+-----------+
4 rows in set (0.00 sec)

↑一度 mysqld を再起動しても反映されていない時があった。必ず反映していることを確認すること。

ここまでで、Row_format を Compact → DYNAMIC (or COMPRESSED)に変更する下準備ができたことになる。

再度確認
-------------------------------------------------
use データベース名 ← データベースを選択

SHOW TABLE STATUS LIKE 'テーブル名'\G
-------------------------------------------------

まだ Row_format は Compact のまま

今回は ROW_FORMAT を DYNAMIC にするので以下を実行
-------------------------------------------------
mysql> ALTER TABLE `テーブル名` ROW_FORMAT=DYNAMIC;
-------------------------------------------------

無事に変更されていることを確認する
-------------------------------------------------
use データベース名 ← データベースを選択

SHOW TABLE STATUS LIKE 'テーブル名'\G
-------------------------------------------------

phpmyadminでデータベースをエクスポートしたらphpの実行時間オーバー

phpmyadminからデータベースをエクスポートしたらphpの実行時間オーバーでできなかった。

解決方法1
ターミナルでサーバーにログインしてダウンロードする

phpの実行時間オーバーなので php を使わずにエクスポートする。

////////////////////////////////////////
mysqldump -u root -p database_name > ダウンロード後のファイル名.sql
////////////////////////////////////////

上記は mysql はログインせずに実行する。ダウンロード先はカレントディレクトリになるので、不都合ならパスを指定する。

解決方法2
php の実行時間を延長させる。

確定申告の手順

1.レシート、領収書を月ごとに分ける。分けたものを現金で支払ったもの、事業用に使うカードで支払ったもの、プライベートカードで支払ってしまったものに分ける。amazon の領収書もダウンロードする。

2.現金で支払ったものは、やよいの青色申告で現金出納帳を記入。
書籍代の勘定科目は一般的には「新聞図書費」とする場合が多いようだが自分は「消耗品費」とする。

12月末時点でマイナスになるようなら1月1日の日付で事業主借の勘定科目で事業資金の補充をする。

個人事業税や自動車税は租税公課として経費にできる。所得税や住民税は個人にかかる税金なので経費にできない。
ただし、所得税は予定納税(先払い)なので確定申告時は予定納税分をマイナスにする。

勘定科目
コインパーキング → 旅費交通費
ガソリン代 → 旅費交通費(補助勘定科目 ガソリン代)
ゆうパック → 荷造運賃
スタバ → 作業代
住宅ローン → 事業主貸(住宅ローン)
マンション管理費 → 管理費(マンション管理費)※家事按分する
住宅ローン金利 → 利子割引料(住宅ローン金利)※家事按分する

仕訳日記帳ですべての仕訳を確認できる

3.やよいの青色申告で預金出納帳を記入。通帳の内容を丸写しするだけ。クレジットカードの引き落としは事業用通帳からプライベートカードの引き落としがされたと考えて「事業主貸‐自家消費・家事消費」にしてある。プライベート用のクレジットカードで事業経費を支払ったことにする。事業用のクレジットカードで事業経費を支払うより記入が簡単。

銀行からの利息は「事業主借」で処理する。

参考サイト

参考サイト

フリーランスの経費は、すべて「事業主借」で処理する!

仕訳入力に使う帳簿は「振替伝票」だけ!
(個人事業主が自分一人で「記帳」できる自信がつく4つのポイント。)

4.振替伝票でクレジットカード払いした経費を記入。クレジットカードの利用履歴をダウンロードして、経費で落とせるものをピックアップして記入していく。

2018年度の按分割合
電気代 ×0.7
NTTネット代 ×0.9
ソフトバンク ×0.5
ガス代 ×0.2
ガソリン代 ×0.3
車関連(保険、整備)×0.3
自転車関連 ×0.3

2020年度の按分割合
リビングの家電 ×0.2(案分処理不要)
マンション管理費 ×0.2
水道カートリッジ交換(水道光熱費) ×0.2
電気ガス合算×0.5
水道代 ×0.2
ソフトバンク ×0.7
ガソリン代 ×0.3

プライベートのカードで支払った事業費用は未払金の処理は不要。カードを使った日だけ振替伝票に登録すればいい。

5.プライベート用カードで支払ったものも振替伝票で記入していく。

参考サイト

6.家事按分する。仕訳書出しないと決算書(緑色の)には反映されないので忘れずに。

7.所得税青色申告決算書を確認。必要ならコピー。

8.7の書類をもとに国税庁のホームページから確定申告書Bを作成。(やよいの青色申告では更新しないとつくれない)

社会保険料控除できるもの
国民健康保険
国民年金(妻の分は合算)
地震保険料(自宅分のみ。つまり8割)
※控除できない火災保険は按分して経費。十年分一括で経費として処理したので、今後は毎年の地震保険控除のみ行う。

所得税青色申告決算書を開くと「内訳金額と損益計算書の金額が一致していません」とエラーが出るの対処法

所得税青色申告決算の三ページ目の地代家賃の金額を修正する
参考:
B202 内訳金額の合計が損益計算書の合計と一致していません

9.以下の書類をコピーして保存する。

現金出納帳
預金出納帳
仕訳日記帳
総勘定元帳

確定申告作成コーナーで入力した住宅ローン控除の情報メモ
///////////////////////////////////////////////////////////////////////////
自己の専有部分の床面積を小数点第2位まで入力してください(登記事項証明書に記載されています)。
80.89 ㎡

(住宅に関する事項の入力)事業用等に使用している部分の床面積を小数点第2位まで入力してください。
16.17 ㎡

1棟の住宅の総床面積を小数点第2位まで入力してください(登記事項証明書に記載されています)。
13673.60 ㎡

(土地に関する事項の入力の)事業用等に使用している部分の床面積を小数点第2位まで入力してください。
複雑な計算の結果 → 17.7772813 ㎡
///////////////////////////////////////////////////////////////////////////

amazon kindleのハイライトの読み込みが終わらない

amazon kindle のハイライトを ブラウザで確認すると特定の本で読み込みが完了しない。

url: https://read.amazon.co.jp/kp/notebook

1

「申し訳ありませんが、問題が発生しました。もう一度お試しください。」と出る。時間を変えて何度か再読み込みを試みるも変化なし。スマホサイトでも同じ。
windows の kindle アプリでは問題なく表示される。ただし、サイトに引用したいのでコピペすると一文字ずつとなりに不要な半角スペースが入って扱いにくい。

問題解決のために、エラーが出る手前、表示できているハイライトまで消してみた。そして再読み込み。

2

すべてのハイライトが「エクスポートの制限に達したため、一部のハイライトが非表示になっているか、省略されています。」になってしまった。そんなはずないのだが。

windows の kindle とかではハイライトを確認できるのでデータが消えたりしていることはないよう。

解決策が分からないので、windows kindle アプリからコピペして対応した。
不要な半角スペースを削除する秀丸エディタでの正規表現は

検索(上段) \s([^ ])
置換(下段) \1

これで全角スペースが続かない半角スペースをすべて削除できる。ハイライトは改行が半角スペースに置き換えられるので改行の代わりと思われる半角スペース以外を消している。八割方この方法でwebハイライトと同じ表示になるだろうと思う。

↑ windows kindle からコピペしてたら制限に引っかかってコピーできなくなった!

3

しょうがないのでテキストデータからコピペした。

秀丸エディタで連続改行を一つに置換するには

検索(上段) ^\n
置換(下段) (空欄)

その後改行コードを半角スペースに置換

検索(上段) \n
置換(下段) (半角スペース)

jQueryで文字列から破綻したhtmlタグを取る方法

破綻したhtmlタグとは
1.こんにちは</div> ← 開始のdivタグがない
2.<span>こんばんは ← 終わりの span タグがない

文字列操作をしていると上記のような状況が出てきたので、htmlタグに破たんがないように修正したかった。

方法
/////////////////////////////////////////////////
var string = 破綻した html
//破綻している html を作業スペースに置く
$('#tmp_place').html(string);

//再度取り出す
string= $('#tmp_place').html();
/////////////////////////////////////////////////

//作業スペースはあらかじめ用意しておく
/////////////////////////////////////////////////
htmlファイル
<div id="tmp_place" style="display:none"></div>
/////////////////////////////////////////////////

jQuery の .html でエレメント内に挿入して、ふたたぎ取り出すと破綻した html は修正される。確認は chrome のみ。ほかのブラウザは不明。

iphoneで一部のページが読み込めない

iphone で一部のページが読み込めない。PCでは問題なく表示されるページでも iphone では safari も chrome もダメだった。

iphone_server_error

「ページを開けません。サーバーが応答を停止しています。」と出る。

PCでページの読み込み時間を計測した
ttfb_time
FFTBが長すぎ

原因は、サーバーサイド(PHP)の処理に時間がかかりすぎるため。どうも iphone では 60 秒以上データを送信しない PHP ファイルはサーバー停止と同じエラーがブラウザに出るみたい。

対策として PHP の繰り返し処理中に1バイトの送信を繰り返す。するとサーバー停止扱いにはならない。

//半角スペースを出力してファイルが処理中であることを iphone に伝える
-------------------------------------------------
echo " ";
-------------------------------------------------

自宅サーバーのインターネットがつながらなかった

自宅サーバーのインターネットがつながらなかった。

デフォルトゲートウェイに ping を打つと Destination Host Unreachable と返ってくる。

ルーターの電源を入れた直したらつながった。

自宅作業環境の覚書

現在の構成

作業PCのほか、固定IPを持った自宅サーバー

自宅サーバー

プロバイダー インターリンク(固定IP)
使用ルーター(192.168.11.1)IOデータ

その他作業PC

プロバイダー ニフティ
使用ルーター(192.168.11.1) BUFFALO

multis_1

画像元

さくらVPSでwwwサブドメインのURLを統一(正規化)する

www.○○○.com でアクセスしたときに、○○○.com にリダイレクトする方法

1.www.○○○.com を叩いたら、○○○.com のデータがあるサーバーにアクセスするように、DNS のゾーンの設定をする。

2.○○○.com のサーバー内の vhost.conf などの設定ファイルに以下の記述を追記する。

--------------------------------------------------
# www normalization
ServerAlias www.○○○.com
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.○○○\.com$
RewriteRule ^/(.*) http://○○○.com/$1 [R=301,L]
--------------------------------------------------

なお、△△△.○○○.com のように既にサブドメインがついている URL は対して、www.△△△.○○○.com というサブドメインのサブドメインをつける URL の記述は通常しない。www 自体がサブドメインのため。上記のやり方でも正規化できない。

うまくいかない場合は、ブラウザの情報を削除してからやってみる。はまった。

【さくらVPS】php.ini の設定変更の覚書

さくらVPSでphpをインストールした際、別のサーバーでは出なかったエラーが出るようになった。
エラーを表示にした時の設定の覚書

初期設定でphpのエラー出力が非表示になっていたので表示するに変える
-------------------------------------------------
display_errors = Off
-------------------------------------------------
↓↓↓
-------------------------------------------------
display_errors = On
-------------------------------------------------

初期設定が↓のようになっていて「Notice: Undefined index」エラーが出るので変更
-------------------------------------------------
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
-------------------------------------------------

-------------------------------------------------
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
-------------------------------------------------