2017-04-12 1 views
0

私はMySQLデータベースでweb2pyを使用しています。私db.pyファイル内のデータベース・スキームは、次のようになります、私は次のクエリを実行するとWeb2py MySQLデータベース参照エラー

db.define_table('app', 
       Field('name'), 
       Field('appdomain') 
       ) 

db.define_table('role_group', 
       Field('appid', db.app), 
       Field('name') 
       ) 

db.define_table('user', 
       Field('userid', required=True), 
       Field('name', required=True), 
       primarykey=['userid']) 

db.define_table('role', 
       Field('appid', db.app), 
       Field('role_group', db.role_group), 
       Field('name') 
       ) 

db.define_table('role_authorization', 
       Field('userid', db.user, required=True), 
       Field('roleid', db.role, required=True), 
       primarykey=['userid', 'roleid'] 
       ) 

db.define_table('group_authorization', 
       Field('userid', db.user), 
       Field('groupid', db.role_group), 
       primarykey=['userid', 'groupid'] 
       ) 

をベースに(長いため無効なリテラル):ValueErrorを:

userid = "fb|1234" 
userAuthorizations = db((db.user.userid == userid) 
           & (db.tetra_user.userid == db.role_authorization.userid) 
           & (db.role_authorization.roleid == db.role.id) 
           & (db.role.appid == db.app.id) 
          ).select() 

それはこのエラーを返します。 10: 'fb | 1234'。 私は誰かがこのエラーの原因を知っていて、それを解決するのに役立つことを願っています。

敬具、 サイモン

+0

:整数に|あなたは「1234 FB」をキャストしようとすると、このようなエラーが発生したため、

第二に、フィールドuseridのタイプを指定してみてください?それはめったに必要ではなく、レガシーデータベースをサポートするためにのみ使用されます。 – cdonts

答えて

0

まずあなたは、レガシーテーブルにFalseに移行設定する必要があります。したがって、web2pyはそれらを変更するつもりはありません。なぜあなたは `primarkey`を使用している

>>> int("fb|1234") 
ValueError: invalid literal for int() with base 10: 'fb|1234'