ページ更新: 2006-04-07 (金) (5407日前)
2005-04-04 LastModifiedMacroに関するメモ。いまんとこ未整理。 http://trac-hacks.org/wiki/LastModifiedMacro Trac 0.9.4でLastModified Macroを使うと、以下のエラーが出る。 Windows XP SP2, Solaris 10/x86で再現した。 Error: Macro LastModified(WikiStart) failed not all arguments converted during string formatting 該当するチケットは次の2つ?
trac.iniでログを残すよう設定 [logging] log_file = trac.log log_level = INFO log_type = file ログを採取。 2006-04-05 00:31:12,842 Trac[macros] ERROR: Wiki macro LastModified failed (not all arguments converted during string formatting) Traceback (most recent call last): File "C:\Python23\Lib\site-packages\trac\wiki\macros.py", line 437, in render_macro return module.execute(req and req.hdf, content, self.env) File "c:\appdata\trac\hamatani\wiki-macros\LastModified.py", line 60, in execute "ORDER BY version DESC LIMIT 1", page_name) File "C:\Python23\lib\site-packages\trac\db.py", line 217, in execute sql = sql % (('?',) * len(args)) TypeError: not all arguments converted during string formatting LastModified.pyの60行目の処理が原因? エラーメッセージ "not all arguments converted during string formatting" をGoogleで検索。 Problem with mixing doctest with gettext _() によると 「sys.stdout.write("%r\n" % a)」を「sys.stdout.write("%r\n" % (a,))」に変えろ、とのこと。 これって「シーケンス(list、tuple)が必要なので、明示的にtupleを作っている」? 試しにcursor.executeの引数page_nameをtupleに入れてみたところ、エラーは出なくなった。 でも何でこうなるのか調査してない。(page_nameの実際の型を見ればすぐにわかるのだろうが‥‥) 修正前: cursor.execute("SELECT author, time FROM wiki WHERE name = %s " "ORDER BY version DESC LIMIT 1", page_name) 修正後: cursor.execute("SELECT author, time FROM wiki WHERE name = %s " "ORDER BY version DESC LIMIT 1", (page_name,)) 2006-05-22 相変わらず、page_name の参照先の型は調べてないが、どっちかというとこう? >>> page_name = (1,2) >>> print "%s" % page_name Traceback (most recent call last): File "<pyshell#14>", line 1, in -toplevel- print "%s" % page_name TypeError: not all arguments converted during string formatting >>> print "%s" % (page_name,) (1, 2) >>> print "%s" % page_name[0] 1 2006-07-21 Changeset 657 - Trac Hacks - Plugins Macros etc. - Tracで修正された。 |