CodeIgniterの学習 41 - CodeIgniterをVersion1.7.0にアップしたら、system/database/DB_utility.phpを修正しないとCSV出力が出来ない
勢いでCodeIgniterのバージョンを1.6.3から1.7.0にアップしたらCSVファイルの出力が出来なくなった。
(関連 CodeIgniterの学習 27 - CSVファイルをクエリから出力してみる。ついでにDB_utility.php内の出力形態の微調整 http://d.hatena.ne.jp/dix3/20081020/1224503986)
ちなみにバージョンアップの方法は、効率よりも安全を取って、
後で混乱しないように地道にWinMergeで変更部分を目視で確認しながらファイルコピー&マージした。
(+hgで管理)
所用時間は60分位か。ソースの量は大したこと無いので、変更点は軽く眺めただけ。不具合あっても泣かない。
原因
ゆっくりやった結果がこれなので調べてみたら、
http://codeigniter.com/forums/viewthread/95597/ということらしい。
どうやら、$query->field_names()が廃止されて、$query->list_fields()のみになったのに、
DB_utility.php内の変更がされていなかったためみたい。
対処
というわけで、system/database/DB_utility.php を
function csv_from_result($query, $delim = ",", $newline = "\n", $enclosure = '"') { - if ( ! is_object($query) OR ! method_exists($query, 'field_names')) + if ( ! is_object($query) OR ! method_exists($query, 'list_fields'))
function xml_from_result($query, $params = array()) { - if ( ! is_object($query) OR ! method_exists($query, 'field_names')) + if ( ! is_object($query) OR ! method_exists($query, 'list_fields'))
と2カ所修正してCSV出力を復活させた。
やっぱり Version1.7.1になるまで待った方が良かったかな?
他にも何か問題ないかなー?