- 投稿日:2019-03-07T20:07:06+09:00
mtのインポートでエラーが出たお話。
古いMTの記事を新しいMTにお引越しがしたい。
mt5をmt7に移設するらしい。移設先でmt7にバージョンアップしてからテンプレートの修正が入っていたのでさぁ大変。
バージョンが二つも古いのに無事にインポートできるのか!?
marcodiの挑戦が今始ま①
インポートの途中でエラーが発生しました : 状態は正しくありません 。インポートファイルを確認してください。
②Failed to execute INSERT INTO mt_entry (entry_allow_comments, entry_allow_pings, entry_atom_id, entry_author_id, entry_authored_on, entry_basename, entry_blog_id, entry_category_id, entry_class, entry_comment_count, entry_convert_breaks, entry_created_by, entry_created_on, entry_excerpt, entry_keywords, entry_modified_by, entry_modified_on, entry_ping_count, entry_pinged_urls, entry_status, entry_tangent_cache, entry_template_id, entry_text, entry_text_more, entry_title, entry_to_ping_urls, entry_unpublished_on, entry_week_number, entry_current_revision) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) with allow_comments, allow_pings, atom_id, author_id, authored_on, basename, blog_id, category_id, class, comment_count, convert_breaks, created_by, created_on, excerpt, keywords, modified_by, modified_on, ping_count, pinged_urls, status, tangent_cache, template_id, text, text_more, title, to_ping_urls, unpublished_on, week_number, current_revision: DBD::mysql::st execute failed: Incorrect string value: '\xF0\x9F\x99\x84</...' for column 'entry_text'アッハイ
まず①について考える。
原因となる箇所を特定する
エクスポートしたファイルを開いて紐解く。
AUTHOR: foo TITLE: ここにタイトル BASENAME: foo_111 STATUS: ALLOW COMMENTS: 1 CONVERT BREAKS: __default__ ALLOW PINGS: 1 DATE: 10/19/2030 05:06:16 AM ----- BODY: ボディがお留守 ----- EXTENDED BODY: ボディががら空き ----- EXCERPT: ----- KEYWORDS: ----- COMMENT: AUTHOR: comment_user EMAIL: IP: 127.0.0.1 URL: DATE: 10/19/2030 06:06:16 AM コメントがあればCOMMENT:~↓の-----まで 1コメントとして取り扱われる ----- ----- --------mt5ではこのブロックが何個も縦に連なった状態でエクスポートされます。
ではエラーが出た記事はどうなってるか。
AUTHOR: foo TITLE: BASENAME: foo_111 STATUS: ALLOW COMMENTS: 1 CONVERT BREAKS: __default__ ALLOW PINGS: 1 DATE: 12/31/2012 11:42:45 PM ----- BODY: ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- ----- --------下書きを作ってすぐ放置されたものと思われる。
AUTHOR: foo TITLE: BASENAME: foo_111 STATUS: Draft ALLOW COMMENTS: 1 CONVERT BREAKS: richtext ALLOW PINGS: 1 DATE: 12/31/2012 11:42:45 PM ----- BODY: ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- ----- --------mt7で下書きをエクスポートするとこの通り。
STATUSに値が入っていないないとエラーになります。
このあたりはバージョンアップで変わったのかもしれませんね。原因解消にあたる
この下書きがいらないならそのブロックを消してしまってOK。
下書きを残す場合はSTATUS: Draftとしてしまうと良いでしょう。まずはエディタで修正したインポートファイルを開き、改行コードをLFにする。
改行コードをLFにする。
改行コードをLFにする。
改行コードをLFにする。
改行コードが異なると正常に読み込んでくれません。正規表現込みでgrepをかけて該当箇所を適宜解消していく
STATUS: \nあとはインポートするだけ!
次に②
原因となる箇所を特定する
エラー文言からはインサートエラーであるのが伺えます。
インポートテキストから該当記事をみると?
これ。
原因解消にあたる
今回MySqlでの作業になりますが、顔文字をデータベースに登録するには設定を変更する必要があって、
雑なんですが以下の記事がとても参考になります。以上、お役に立てましたら幸いです。
備考
最期までインポートしてるのにエラーの出るファイルがあるのナンデ???
→原因不明、そもそも改行コードを変えると正常に取り込まず終了する。。
凡ミスっぽいけどどうなんだろう記事消す量が多いとtimeoutしちゃうナンデ????
→DB設定の変更で解決します
- 投稿日:2019-03-07T20:07:06+09:00
MovableType7の記事インポートでエラーが出たお話。
古いMTの記事を新しいMTにお引越しがしたい。
mt5をmt7に移設するらしい。移設先でmt7にバージョンアップしてからテンプレートの修正が入っていたのでさぁ大変。
バージョンが二つも古いのに無事にインポートできるのか!?
marcodiの挑戦が今始ま①
インポートの途中でエラーが発生しました : 状態は正しくありません 。インポートファイルを確認してください。
②Failed to execute INSERT INTO mt_entry (entry_allow_comments, entry_allow_pings, entry_atom_id, entry_author_id, entry_authored_on, entry_basename, entry_blog_id, entry_category_id, entry_class, entry_comment_count, entry_convert_breaks, entry_created_by, entry_created_on, entry_excerpt, entry_keywords, entry_modified_by, entry_modified_on, entry_ping_count, entry_pinged_urls, entry_status, entry_tangent_cache, entry_template_id, entry_text, entry_text_more, entry_title, entry_to_ping_urls, entry_unpublished_on, entry_week_number, entry_current_revision) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) with allow_comments, allow_pings, atom_id, author_id, authored_on, basename, blog_id, category_id, class, comment_count, convert_breaks, created_by, created_on, excerpt, keywords, modified_by, modified_on, ping_count, pinged_urls, status, tangent_cache, template_id, text, text_more, title, to_ping_urls, unpublished_on, week_number, current_revision: DBD::mysql::st execute failed: Incorrect string value: '\xF0\x9F\x99\x84</...' for column 'entry_text'アッハイ
まず①について考える。
原因となる箇所を特定する
エクスポートしたファイルを開いて紐解く。
AUTHOR: foo TITLE: くさなぎきょう BASENAME: foo_111 STATUS: ALLOW COMMENTS: 1 CONVERT BREAKS: __default__ ALLOW PINGS: 1 DATE: 10/19/2030 05:06:16 AM ----- BODY: ボディがお留守 ----- EXTENDED BODY: ボディががら空き ----- EXCERPT: ----- KEYWORDS: ----- COMMENT: AUTHOR: comment_user EMAIL: IP: 127.0.0.1 URL: DATE: 10/19/2030 06:06:16 AM コメントがあればCOMMENT:~↓の-----まで 1コメントとして取り扱われる ----- ----- --------mt5ではこのブロックが何個も縦に連なった状態でエクスポートされます。
ではエラーが出た記事はどうなってるか。
AUTHOR: foo TITLE: BASENAME: foo_111 STATUS: ALLOW COMMENTS: 1 CONVERT BREAKS: __default__ ALLOW PINGS: 1 DATE: 12/31/2012 11:42:45 PM ----- BODY: ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- ----- --------下書きを作ってすぐ放置されたものと思われる。
AUTHOR: foo TITLE: BASENAME: foo_111 STATUS: Draft ALLOW COMMENTS: 1 CONVERT BREAKS: richtext ALLOW PINGS: 1 DATE: 12/31/2012 11:42:45 PM ----- BODY: ----- EXTENDED BODY: ----- EXCERPT: ----- KEYWORDS: ----- ----- --------mt7で下書きをエクスポートするとこの通り。
STATUSに値が入っていないないとエラーになります。
このあたりはバージョンアップで変わったのかもしれませんね。原因解消にあたる
この下書きがいらないならそのブロックを消してしまってOK。
下書きを残す場合はSTATUS: Draftとしてしまうと良いでしょう。まずはエディタで修正したインポートファイルを開き、改行コードをLFにする。
改行コードをLFにする。
改行コードをLFにする。
改行コードをLFにする。
改行コードが異なると正常に読み込んでくれません。正規表現込みでgrepをかけて該当箇所を適宜解消していく
STATUS: \nあとはインポートするだけ!
次に②
原因となる箇所を特定する
エラー文言からはインサートエラーであるのが伺えます。
インポートテキストから該当記事をみると?
これ。
原因解消にあたる
今回MySqlでの作業になりますが、顔文字をデータベースに登録するには設定を変更する必要あり。
雑な誘導ではありますが、以下の記事がとても参考になります。以上、お役に立てましたら幸いです。
備考
最期までインポートしてるのにエラーの出るファイルがあるのナンデ???
→原因不明、そもそも改行コードを変えると正常に取り込まず終了する。。
凡ミスっぽいけどどうなんだろう記事消す量が多いとtimeoutしちゃうナンデ????
→DB設定の変更で解決します
- 投稿日:2019-03-07T17:49:28+09:00
Azure Database for MySQL で稀によく遭遇する DBエラー
弊社のシステムはAzure Database for MySQLを使っています。
アプリケーションログを監視しているとたまにDBエラーがでているのが確認できます。エラーのタイミングとして、いっつも出ているわけじゃないけど一度発生すると短時間に大量に出るという、まさに「稀によくある」状態です。
ググってヒットするエラーもあれば、全く他で見たことがないエラーもあるため、Qiitaの皆さんのなかに「それ原因知っているぜ!!」という方がいれば知見をいただきたく、もしくは困っている開発者同士の情報交換の場になればというのがこの記事の趣旨となります。
※並行してAzure調査チームにサービスリクエストを出しているので、そちらで原因がわかったものは追記する予定です。SQLSTATE[HY000] [2006] MySQL server has gone away
このエラー自体はググっても見かけるやつです。
ただ、困ったことに数秒でエラーで返ってくることもあれば、数分、数時間後にやっとエラーが返ってくることもあるようです。
(実績があるログなので大丈夫だとは思いますが、たまに数日後にエラーが返ってくるものもあり、ちゃんとログ取れているのかは不安)一般的には接続中のコネクションが切れた場合などに出るらしいですが、殆どが初期化処理の一番最初の接続時に出ているのでイマイチ原因がわかっていません。
PHPのシステムなので処理終了時に明示的なdisconnectをしていないのだけど、それが原因なのか?というのがありますが、まだ検証しきれていない状況です。SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
ググってみると単純な設定ミスらしいのですが、稼働中のシステムでぽつんと1件だけ発生したことがありました。
とはいえ過去1度しか見てないので今後起きない可能性もあります。SQLSTATE[HY000] [9002] The server name you tried cannot be found. Please use the correct name and retry. Please check your server name [DBサーバ名].
こちらも1つ前と同じく過去1度しか見てないので今後起きない可能性もあります。
SQLSTATE[HY000] [9002] An error occurred when accessing your server. Please retry or report your issues.
ググってもよくわからず、現状お手上げ。(サービスリクエスト中)
SQLSTATE[HY000] [9002] Some errors occured.
ググってもよくわからず、現状お手上げ。
最近は起きておらず、次回発生したときに原因がわからなければサービスリクエストする予定です。SQLSTATE[HY000] [9002] Server is not ready for incoming connections.
ググってもよくわからず、現状お手上げ。
こちらも最近は起きておらず、次回発生したときに原因がわからなければサービスリクエストする予定です。SQLSTATE[HY000] [9999] An internal error has occurred. Please retry or report your issues.
これは以前発生したときにサービスリクエストを出したんですが、Azure側のログが流れてしまって原因究明には至りませんでした。
ただ、同時刻帯で内部サーバのメンテナンスが発生していたそうなので、その切替の間に発生していた可能性が今のところ濃厚。
- 投稿日:2019-03-07T17:02:46+09:00
Rubyで使用する各ツールの用途について
Rubyで活躍する代表的なツール
まずはツールの名前だけ先に上げていくことにします。
詳しくは以下でまとめていきますので一緒に確認していきましょう!・Gem
・Ruby On Rails(gemの中の1つ)
・bundler
・sequel proGemとは
Gemはライブラリの一種です。
Gemはどういった用途があるかというと、例えばとある機能を実装しようとした時に自分で1から実装しようとすると、かなりの労力と時間がかかってしまう可能性があるのですが、Gemではすでに他の誰かが開発済みの機能を借りて来ることができてしまうんです。つまり、アプリ作成において自分で実装する部分を最小限に抑えることができるというかなりの優れものです。
Gemについての詳細はこちらを参考にしてみてください!
https://blog.codecamp.jp/rails-gemSequelproとは
次にSequelproについてですがこちらはGUIツールとよばれるものの1つです。
簡単にいうと、データベースにつなげるためのものです。
データベース(DB)はMySQLというものがよく知られています。MySQLへの接続方法の詳細についてはこちらを参考にしてみてください!
https://qiita.com/iwaseasahi/items/e245e61da4b7613494c5bundlerとは
bundlerとはGem同士の互換性を保ちながら、パッケージの種類やバージョンを管理してくれる仕組みを持つものです。
実はbundlerもGemの1つです。
このbundlerがないと以下のようなことが起きてしまい、動作がうまくいかない現象が多発してしまいます。例えば、いくつもライブラリを使用している中でAのライブラリは最新の状態で保持されているが、ライブラリBは1つ前のバージョンであった場合に互換性の問題でうまく動作しない。
こういった現象が起きないように管理してくれるのがbundlerというわけです。
bundlerをインストールしておくだけで無意識にこういったことが原因で起きるエラーを回避できるということなんです。インストールしておいて損はないので是非インストールしましょう!
インストールについては以下を参考にしてください!
- 投稿日:2019-03-07T13:54:24+09:00
Dockerfileのベースイメージをmysqlに指定した時に、sequel proに接続する方法
はじめに
Dckerfile
FROM mysql:5.7docker-compose.ymlversion: '3' services: web: build: context: . dockerfile: ./Dockerfile volumes: - .:/data ports: - '3000:3000' environment: - MYSQL_ROOT_PASSWORD=passwordベースイメージをmysqlにしているときに
webアプリケーションにlocalhost:3000で接続でき、sequel proにも接続したい。Sequel Proの接続情報
host: 127.0.0.1
user: root
pass: password
port: 3000これで接続できると思っていたが、接続できなかった。
解決方法
アプリ側のポートに"3306"を追加する
docker-compose.ymlversion: '3' services: web: build: context: . dockerfile: ./Dockerfile volumes: - .:/data ports: - '3000:3000' - '3306:3306' # 追加 environment: - MYSQL_ROOT_PASSWORD=passwordSequel Proの接続情報
host: 127.0.0.1
user: root
pass: password
port: 3306これで接続できた。めでたし、めでたし。