ページ 1 / 1
0.9.6.3→1.0.2jアップデート テンプレート変数Dateのあつかい
Posted: 2010年3月03日(水) 13:22
by min-o
お世話になっております。
modx0.9.6.3から1.0.2jへアップデートしました。
evoはこれまでとページ設定での、公開日時など日付部分の書き方が変更になっていますね。
modx0.9.6.3の場合
04-03-2010 10:00:00
1.0.2jの場合
2010/03/03 10:00:00
アップデートの際、公開日時、取り消し日時は自動でデータベースも書き換えてくれたのですが
入力タイプでDateを使っているテンプレート変数の値は
04-03-2010 10:00:00
のまま書き換えられませんでした。
プレビューの日付は合っているのですが、これは値をすべて2010/03/03 10:00:00のように変更しておいた方がいいのでしょうか?
ちょっと気になるのが、アップデート終了画面に以下のような警告が出ていたのです。
これが原因で日付が書き換えられなかったのかもしれないです。
とりあえずサイト自体は問題なく表示できているのですが…
必要なテーブルの作成: データベースの警告
MODx setup couldn't install/alter some tables inside the selected database.
インストール中に以下のエラーが発生しました
Column 'description' cannot be part of FULLTEXT index during the execution of SQL statement ALTER TABLE `modx_site_content` MODIFY COLUMN `pagetitle` varchar(255) NOT NULL default '', MODIFY COLUMN `alias` varchar(255) default '', MODIFY COLUMN `menutitle` varchar(255) NOT NULL DEFAULT '' COMMENT 'Menu title'.
いくつかのテーブルはアップデートされませんでした。修正などに起因しているようです。
インストール終了
よろしくお願いします。
-----サーバー環境---------
さくらインターネット 共用サーバ ビジネスプロ
ネットワーク:インターネット
Apache/1.3.42 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e
PHP 5.2.12
MySQL 5.1.42
modx1.0.2J
Re: 0.9.6.3→1.0.2jアップデート テンプレート変数Dateのあつかい
Posted: 2010年3月03日(水) 15:21
by yama
dateタイプのテンプレート変数は現時点では日付対応の対象になってないので、報告されたとおりの状態で合ってます。すっきりしないですが、このへん簡単そうで意外と難しいところで。これはそのまま運用しちゃってください。
アップデート直後にエラーが出力された件は別の話しのようですが、少し気になります。MODxのインストーラは少しおバカなところがあって、実はインストールに失敗しても最後まで「完了」してしまいます。
http://modxcms.com/forums/index.php/topic,18933.0.html
上記に参考情報があります。ただし、このとおりにすればよいということではなくて・・たぶんさくらインターネットのサーバ側に問題があると思うので、念のためにさくらさんに問い合わせてみるとよいかも。
たしかさくらのSQLサーバって、デフォルトの文字セットの照合順序がutf8_unicode_ciのように見えるけどujis(euc)になってるケースがほとんどのはず。config.inc.phpの「$database_connection_charset」の値はutf8になってますでしょうか?たぶんujisになってる気がします。僕はさくらのサーバを利用する案件にあたるたびに、phpMyAdminでutf8に設定し直してます。(対象データベースの操作タブで確認できます)

Re: 0.9.6.3→1.0.2jアップデート テンプレート変数Dateのあつかい
Posted: 2010年3月03日(水) 17:37
by min-o
yamaさん 返信ありがとうございます。
テンプレート変数 Dateの件は了解です。表示には問題ないのでこのまま運用します。
エラーの件、
さくらのSQLサーバ、わたしも最近気が付きまして、新規インストのときは参照順序をutf8_general_ciに直すようにしました。
しかし今回アップデートしたサイトは、
1.以前別のレンサバで新規インストールで運用
(初めてだったので参照順序未確認のまま)
2.サクラに引越し
しばらくして気が付いて参照順序をutf8_general_ciに変更
3.サクラでアップデート
なので、むかしの設定を引きずっているのかもしれません。
今回のアップデート前と直後、modxのシステム情報で確認したら
-------
データベース文字コード ujis
文字セット照合順序 ujis_japanase_ci
------
このときphpMyAdminを開いて中を見てもutf8_general_ciでしたので、??だったのですが
数時間後にシステム情報確認したら
--------
データベース文字コード utf8
文字セット照合順序 utf8_general_ci
-------
に直ってました。なにやらナゾですがutf8になってるならいいか、とスルーしてしまいました--;
phpMyAdminでも、各テーブルの参照順序もutf8_general_ciになっていますが、まだどこかにujisが残っているのでしょうか?
Re: 0.9.6.3→1.0.2jアップデート テンプレート変数Dateのあつかい
Posted: 2010年3月03日(水) 19:31
by sama55
こんにちは
min-o さんが書きました:phpMyAdminでも、各テーブルの参照順序もutf8_general_ciになっていますが、まだどこかにujisが残っているのでしょうか?
確証は得てないのですが、どうもそんな匂いがしますね。
--お試し案1(一括補正)--
MySQLのエラーメッセージを基に下の順序でページを巡ってみました。
MySQLが出力してるエラーメッセージの定義)
http://dev.mysql.com/doc/refman/5.1/en/ ... _ft_column ※ER_BAD_FT_COLUMNが肝っぽい
↓
ER_BAD_FT_COLUMNについての議論)
http://bogdan.org.ua/2008/02/08/convert ... other.html
※ページを表示してから”ER_BAD_FT_COLUMN”でページ内検索すると3件該当
※DB全体の照合順序ではなく個別フィールドの照合順序に問題がありそう
※偉い人がDBの各テーブル、各フィールドの照合順序を"utf8_general_ci"に変更するプログラムを公開してる模様
↓
change-collation-on-all-tables-and-columns-in-mysql というツールのありか)
http://www.phoca.cz/documents/38-tools/ ... n-database
※日本語環境では問題があるようです(スミマセン)。下のmin-oさんの記事も必ず読んでください。
http://forum.modx.jp/viewtopic.php?p=1654#p1654
このプログラムはDB内のすべてのテーブルのすべてのフィールドの照合順序を"utf8_general_ci"に書き換えるので、DB内に"utf8_general_ci"にしてはまずいテーブルが混在してる場合は使えません。
(さくらはDBが原則一つなので要注意)
上記のスクリプトは自分もダウンロードしてみて、試験的にローカルサーバで実行してみましたが、しっかり処理してるようです。
適用方法は簡単。
・ファイルをダウンロード
・解凍
・フォルダをサーバにアップ
・index.phpにアクセス
・表示画面でDBの情報を入れて実行
・発行されたSQLと実行結果が表示されます
・
フォルダ削除 (忘れずに!)
--お試し案2(マニュアル補正)--
エラーメッセージからエラーになるテーブル名とフィールド名を一つづつ特定し、phpMyadminから個々に照合順序を確認後マニュアルで補正
以上、どちらかを行った後に、再度アップグレードしてみる。
Re: 0.9.6.3→1.0.2jアップデート テンプレート変数Dateのあつかい
Posted: 2010年3月05日(金) 11:40
by min-o
こんにちは。
sama55さん、返信ありがとうございます。
サブドメインでテスト用とmodxとデータベースを用意して、お試し案1の方法をやってみました。
tool_phoca_changing_collationはすべてOKがで無事終了したのですが、
再アップデートしても、まったく同じエラーがでました。
やっぱり手動でvarchar(255)を修正するしかないかも^^;
tool_phoca_changing_collation
凄く便利なツールですが、日本語環境ではちょっと注意です。
というのも、modxのエレメントで、カテゴリー名に2バイト文字を使っていたものあったのですが、カテゴリーがなくなって、カテゴリー外(?)になってしまいました。
これによってチャンクの位置がわからなくなったらしく、表示がうまく行かなくなってしまいました。
またエレメントの説明につけていた日本語も消えました。
他にはテンプレートで名前にIndex_xxxとかつけていたものも、名前が消えて空白になっていました。
使う方はご注意ください。

Re: 0.9.6.3→1.0.2jアップデート テンプレート変数Dateのあつかい
Posted: 2010年3月05日(金) 12:20
by sama55
min-o さんが書きました:やっぱり手動でvarchar(255)を修正するしかないかも^^;
残念。話の流れと調査結果から自分も照合順序を変えるだけでOKと思ったのですが、甘かったです。
対処フィールドが少ないことを祈ります。