AD:
WordPressでユーザの情報を名前や、そのほかのもろもろの情報をCSVで出力したかったのですが、そのSQLをメモしておきます。
wp_userテーブルに基本、wp_usemetaに姓、名などの細かい情報が入っているのですが下記のようなテーブル構成になっているので、各種項目を一度に取ってくるには一つ一つをjoinして取ってくるしかないので、メモしておきます。
SQLはこんな感じです。
|
SELECT u.ID, u.user_email, m1.meta_value AS firstname, m2.meta_value AS lastname, m3.meta_value AS country FROM wp_users u JOIN wp_usermeta m1 ON (m1.user_id = u.ID AND m1.meta_key = 'first_name') JOIN wp_usermeta m2 ON (m2.user_id = u.ID AND m2.meta_key = 'last_name') JOIN wp_usermeta m3 ON (m3.user_id = u.ID AND m3.meta_key = 'country') Limit 100; |
もしSQLから直接CSVを書きだしたかったら、参考まにでこちらをどうぞ
MysqlでSelectの結果をCSVにエクスポートする
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 2 | Total: 2 | Feedly: 0
AD:
先日DrupalのあるモジュールがFunctionのredeclareエラー(同じFunctionを2回呼んでいるよー)がで困った際に調査してわかりましたので、メモしておきます。
調べてみるとたしかにフォルダ別に同じモジュールがあることがわかりました。
でも、どちらのモジュールを使用しているか、Adminページではわからなかったて、同僚に聞いてみるとsystemテーブルなるものがあるようです。
systemテーブルに下記のようにモジュールの種類や、Weight、ファイルのパスなどを確認できるようになっております。
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 1 | Pocket: 0 | Total: 1 | Feedly: 0
AD:
MovableType 5.2で構築されたブログのデータをWordpress 4にインポートする作業を最近行いましたが、その際にいろいろと面倒だったので、メモを公開させていただきます。
はじめは、MovableTypeのエクスポート機能とWordpressのMTのインポートプラグインを使ってやったところ、文字化けやカテゴリがまったくうまくいきませんでした。
他にもいろいろと手はあると思ったのですが、最終的にMovableTypeのデータベース(Mysql)からCSV作成して、それをWordpressのCSV用のインポートのプラグインを使ってインポートで解決させました。
WordPressのプラグイン
WordPressにCSVのインポート用に下記のプラグインを使用しました。
WP Ultimate CSV Importer Plugin
WP Ultimate CSV Importer Pluginを使って、まず既存のWordpressの記事からCSVのサンプルをエクスポートしました。
それをさらにインポートして試してみました。すると最低限のフィールドがわかったので、下記のフィールドでCSVを作成しました。
MovableTypeのデータベースからWP Ultimate CSV Importer用のCSVを作成
上記のフィールドを元に、下記のSQLを作成して、CSVをエクスポートしました。
|
SELECT entry_id AS wp_ID, entry_created_on AS wp_post_date, CASE entry_category_id WHEN NULL THEN 'publish' ELSE 'publish' END AS wp_post_status, entry_title AS wp_post_title, REPLACE(entry_text, CHAR(10), '<br>') AS wp_post_content, entry_basename AS wp_post_name, CASE entry_category_id WHEN NULL THEN 'ayumi' ELSE 'ayumi' END AS wp_post_author, mc.category_description AS tx_category FROM mt_entry AS me LEFT JOIN mt_placement AS mp ON me.entry_id = mp.placement_entry_id LEFT JOIN mt_category AS mc ON mc.category_id = mp.placement_category_id WHERE entry_atom_id LIKE '%column%' ORDER BY entry_id DESC INTO OUTFILE '/tmp/mt.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; |
WP Ultimate CSV Importerは、CSVにヘッダーがないとうまくいかないので、下記のヘッダーを追加してやる
|
id,date,status,titile,contents,base,user,category |
インポート
下記の用に管理画面からインポートとどのフィールドにマッチさせるかを選択して、無事インポートができました。
Tips
- パーマリンク設定は、/%year%/%monthnum%/%postname%/に変更
- MTで内部に使用している画像は同じディレクトリ構成で、WPサイトに設置
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 2 | Pocket: 2 | Total: 4 | Feedly: 0
AD:
こんな感じで、SELECT分の後にINTO OUTFILEを追加してあげればOKです。
|
SELECT * FROM user WHERE status = 1 ORDER BY id ASC INTO OUTFILE '/tmp/status_user.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 1 | Total: 1 | Feedly: 0
AD:
結構複雑に入り込んだデータ設計が必要になったので、お客様にもデータを持ち方を確認してもらうためにER図を作成することにしました。
で、MySQL Workbenchに行き着いた感じです。
一部ですが、SQLがすでにあるので、それをいちいち手動でER図書くのは面倒だと思った、ちゃんと既存データベースからER図を作成する方法があるので、メモしておきます。
やり方のメモ
- MySQL Workbenchをインストール
- データベースの情報を入力する
- Continueを押していくと、Mysqlが持っているデータベースの一覧が表示される。
- 画面はWordpressのDBの一覧です。
どうやらリレーションシップは出してくれないようですね。
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 1 | Pocket: 2 | Total: 3 | Feedly: 0
AD:
In AppFog, when you connect Database you will use tunnel but I could not access today.
|
$ af tunnel 1: database_name Which service to tunnel to?: 1 Deploying tunnel application 'caldecott-ap-aws'. <span style="color:red;">Error 600: Not enough memory capacity, you're allowed: 2048</span> |
So I searched why and then I found out the problem.
How I fix
When using af tunnel, it uses 64MB that why error was “Not enough memory capacity“.
I just went to Console Page in AppFog and then reduced memory from one of App.
|
$ af tunnel 1: database_name Which service to tunnel to?: 1 Getting tunnel connection info: OK |
Done
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
最近MacでRailsの環境を行っているのですが、Rails3にアップデート( たしかMacPortでアップデートしたような)
して、Mysqlで開発を行おうとしたらエラーがでたので、そのメモを書いておきます。
下記のようなコマンドでプロジェクト?を生成して、さっそく走らしてみる下記のエラー
[bash]$ rails new hoge -d mysql
$ cd /hoge/
$ rails s
dyld: lazy symbol binding failed: Symbol not found: _mysql_get_client_info
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/ext/mysql2/mysql2.bundle
Expected in: flat namespace
dyld: Symbol not found: _mysql_get_client_info
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.3.2/ext/mysql2/mysql2.bundle
Expected in: flat namespace
[/bash]
検索してみていろいろ試してみるが、どれもうまく行かず、最終的に下記のページの内容で解決
http://stackoverflow.com/questions/5894102/bundle-command-the-wrong-mysql2-gem-always-0-3-2
gemのmysqlのライブラリの上げて解決
[bash]
$ sudo gem uninstall mysql2 -i /Library/Ruby/Gems/1.8
$ gem ‘mysql2′,’0.2.7’
$ bundle install
[/bash]
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
本日Mysqlにトラブルがありました、その際の復旧方法をメモしておきます。
さっそくサーバにログインして、確認してみるとMysqlのプロセスは確認できました。
Mysqlに接続を試みるものも接続できず。
とにかく、一度再起動を行ってみました。
|
#/etc/rc.d/init.d/mysqld restart Stopping MySQL: [ OK ] Timeout error occurred trying to start MySQL Daemon. Starting MySQL: [FAILED] |
停止はできるが起動ができませんでした。
解決方法
こういう時は、かならずログにヒントが隠されているのでさっそくログを確認する。
ログの場所はこちら:/var/log/mysqld.log
やはりログに答えは書いてありました、mysqlslow.log に問題ありとのこと。
このログファイルは、SQLの実行が5秒以上かかった場合に残すようにように設定していたログです。
|
# tail /var/log/mysqld.log 110312 17:01:13 [ERROR] /usr/libexec/mysqld: Error writing file '/var/run/mysqld/mysqld.pid' (Errcode: 28) 110312 17:01:13 [ERROR] Can't start server: can't create PID file: No space left on device Number of processes running now: 0 110312 17:01:13 mysqld restarted /usr/libexec/mysqld: Error writing file '/var/log/mysqlslow.log' (Errcode: 28) 110312 17:01:13 [ERROR] Could not use /var/log/mysqlslow.log for logging (error 28). Turning logging off for the whole duration of the MySQL server process. To turn it on again: fix the cause, shutdown the MySQL server and restart it. |
さっそくmysqlslow.logを調査してみる。
mysqlslow.logのサイズが4GB以上になっている。。。。。
とりあえず、ファイルを退避させる。
その後Mysqlの起動を試みる。
|
# /etc/rc.d/init.d/mysqld start Starting MySQL: [ OK ] |
見事に起動。
課題
上記の対応で、サービスは稼動しましたが、いろいろと課題あります。
- 1.ログファイルにローテションを組むようにしとけ!!
- 2.Nagiosで監視してるけど、今回の現象はプロセスは生きているので発見できず、、、監視体制の見直し
- 3.SQLが5秒以上もかかっているプログラムを潰さないと。。。
恐らく、ログは一時期サーバに高負荷に陥ったときに増産されたと思うんんですが、でも対策しないと
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 1 | Total: 1 | Feedly: 0
AD:
CakephpでMysqlで取得したデータのみだけ文字化けの現象がおきましたので、その時の解決法をメモしておきます。
解決法
/app/config/database.phpに文字コードを指定
|
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'pass', 'encoding' => 'utf8' , ← 文字コードを指定 'database' => 'dbname', 'prefix' => '', ); |
上記の設定で解決できました。
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
CakephpでWindowsのローカル環境で開発して、Linuxのサーバに公開したときにひかかったので記載しておきます。
Windowsなど、一部のOSはMysqlは、テーブル名など名前の大文字・小文字は区別しないようです。
Linuxの環境下では、大文字・小文字の区別はするのでCakephpでエラーがでた次第です。
(More…)
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 1 | Pocket: 0 | Total: 1 | Feedly: 0