c3p0、hibernate 连接sybase数据库无法设置连接选项 SET_READONLY_TRUE、SET_CATALOG。 解决

 解决hibernate连sybase出现的"SET_READONLY_TRUE"警告

原因:
java.sql.Connection有一个setReadOnly(boolean)方法用以通知数据库优化返回的结果集,但Sybase及Sybase ASE不需要。

解决:
Darrell Fuller已经解决了此问题。
(参见http://forums.hibernate.org/viewtopic.php?p=2209134&highlight=&sid=d94eb4a43870a4d8303b6557af2aee5d)

Sybase及SQLAnywher有一叫spt_mda的系统表,修改此表中的数据,可解决此问题。(此表在Sybase存放在master数据库中)

ASA数据库

(参见http://forums.hibernate.org/viewtopic.php?p=2209134&highlight=&sid=d94eb4a43870a4d8303b6557af2aee5d)

Sybase及SQLAnywher有一叫spt_mda的系统表,修改此表中的数据,可解决此问题。(此表在Sybase存放在master数据库中)

通过“select * from spt_mda where mdinfo='SET_READONLY_FALSE' or mdinfo='SET_READONLY_TRUE'”的语句可列出相应内容:

 

mdinfoquerytypequery
SET_READONLY_FALSE3 
SET_READONLY_TRUE3 

 

使用

update spt_mda set querytype = 4, query = '0' 
where mdinfo = 'SET_READONLY_FALSE'

update spt_mda set querytype = 4, query = '0' 
where mdinfo = 'SET_READONLY_TRUE'

的语句将此表修改。原来的3代表不支持,因此发出SQLWarning。改为4及0后,将不报错。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
django中的get_readonly_fields是一个ModelAdmin类的方法,用于返回一个包含只读字段的列表。 在django的后台管理系统中,ModelAdmin类用于定义每个模型的管理选项。get_readonly_fields方法允许我们指定哪些字段在编辑模式下是只读的,即不能被修改的。 当我们在自定义一个ModelAdmin类时,可以重写get_readonly_fields方法来定义只读字段。这个方法返回一个包含只读字段的列表,其中的字段名需要与模型中的字段名一致。 例如,假设我们有一个User模型,其中包含“username”和“email”两个字段。我们希望在后台管理系统中,这两个字段在编辑模式下是只读的,即不能被修改。我们可以使用get_readonly_fields方法来实现: ```python from django.contrib import admin class UserAdmin(admin.ModelAdmin): readonly_fields = ('username', 'email') # 全局只读字段 def get_readonly_fields(self, request, obj=None): if obj: # 如果是编辑已有的数据 return ('username', 'email') # 单个对象只读字段 else: # 如果是创建新的数据 return self.readonly_fields admin.site.register(User, UserAdmin) ``` 在上面的例子中,我们首先定义了一个全局只读字段readonly_fields,在编辑模式下所有的对象都将只读。然后通过重写get_readonly_fields方法,我们实现了对于已有数据的编辑时,只有“username”和“email”字段是只读的,而创建新数据时,所有字段都是只读的。 通过get_readonly_fields方法,我们可以灵活地控制模型在后台管理系统中的只读字段,从而更好地管理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值