数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for J

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for J相关的知识,希望对你有一定的参考价值。

数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]未能为数据库 'netinnet_jckj_v60' 中的对象 'sys_log' 分配空间,因为文件组 'PRIMARY' 已满。

1.检查你的磁盘剩余空间是否足够,如果没有磁盘剩余空间,则清理磁盘,腾出空间
2.检查你的磁盘分区格式
如果是FAT16,则数据文件最大只能是2G
如果是FAT32,则数据文件最大只能是4G
改为NTFS分区则没有这种限制
3.检查一下你有没有限制数据库文件的大小
企业管理器--右键你的数据库--属性--文件增长限制--如果有限制大小,取消限制
4.检查你的SQL版本,如果你用MSDE,则限制了数据文件最大是2G
5.你也可以为 primary 组添加新的数据文件来解决这个问题
alter database 库名 add file(NAME = 逻辑文件名,FILENAME = 'c:/实际文件名.ndf'
或者 选中数据库->属性->文件:添加一个新文件
参考技术A http://blog.163.com/dm_kingdee/blog/static/210013041201271113617685/

核心数据:执行提取时出现错误的访问错误

【中文标题】核心数据:执行提取时出现错误的访问错误【英文标题】:Core Data: Bad Access Error upon Execute Fetch 【发布时间】:2011-03-31 12:13:11 【问题描述】:

在 UITableView 的提交中,我使用以下代码删除了一个对象:

[_context deleteObject:[_StudiessList objectAtIndex:indexPath.row]];
NSError *error; 
if (![_context save:&error]) 
    // Handle error
    NSLog(@"Unresolved error series %@, %@", error, [error userInfo]);

 [self LoadData]; // bad access fire here

其中LoadData是重新填充表格视图的函数

它的代码是:

iPaxeraAppDelegate *appDelegate = (iPaxeraAppDelegate *)[[UIApplication sharedApplication] delegate];
self.context = appDelegate.managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription 
                               entityForName:@"Studies" inManagedObjectContext:_context];
[fetchRequest setEntity:entity];
NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"StudyDate" ascending:YES] autorelease]]; 
[fetchRequest setSortDescriptors:sortDescriptors];

NSError *error;
@try   
    // error done here exactly at fetch 
    self.StudiessList = [_context executeFetchRequest:fetchRequest error:&error];  

@catch (NSException * e) 
    NSLog(e);

[fetchRequest release];
[StudiessList retain];

LoadDataexecuteFetchRequest: 上崩溃

【问题讨论】:

你也在泄露StudiesList。感觉它可能是一个保留属性,对self.StudiessList 的调用已经保留了返回的数组。向它发送另一个保留将导致它泄漏,如果它与在 dealloc 中发送的释放之外的另一个释放不平衡。 如果您遵循样式约定,您的代码将更易于阅读。只有框架名称、类名称和常量应该以大写字母开头。 (另外,StudyssList 拼写错误)。所以StudiessList 应该是studiesListLoadData 应该是loadData。遵循约定将使您的代码更容易被其他人阅读。苹果有一个风格指南埋在某个地方。您应该尝试追踪并关注它。 【参考方案1】:

你的问题可能在这里:

NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"StudyDate" ascending:YES] autorelease]]; 

通过附加一个显式的自动释放,您设置了一种情况,在这种情况下,排序描述符可以在仍然需要时被释放。当 fetch 去抓取排序描述符时,它会因为对象不存在而崩溃。

显式自动释放可能会产生问题,因为它们与定义它们的直接作用域的内存池的耗尽密切相关。尽管许多人随意使用自动释放,但实际上应该只在从方法,因为 autorelease 告诉运行时,“我完全完成了这个对象,我不在乎它会发生什么。”如果你没有完成这个对象,那么你就会遇到问题。

使用便捷方法中的隐式自动释放可以消除这个问题,因为自动释放是在另一个范围内发布的,例如持有便捷方法的类对象。然后它进入本地范围并可以保留,而不必担心本地范围内的自动释放会杀死它。

试试:

NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"StudyDate " ascending:YES]];

... 看看是否能解决崩溃问题。

【讨论】:

你能告诉我什么时候发布它,我应该说[sortDescriptor retain]; sortDescriptorWithKey: 是一种方便的方法,它返回一个自动释放的对象,因此您不必释放它。但是,它是在不同的范围内自动发布的,因此它可以防止您现在遇到的问题。 我删除了它,但它引发了同样的错误 [_StudiessList removeObjectAtIndex:indexPath.row];它引发以下错误 -[_PFArray removeObjectAtIndex:]: unrecognized selector sent to instance

以上是关于数据库执行错误java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for J的主要内容,如果未能解决你的问题,请参考以下文章

sql关联查询使用别名报错

为啥我会收到 ORA-06531:对未初始化集合的引用?

问题Cause: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

SpringBoot+Mybatis+Druid批量更新 multi-statement not allow异常

SSIS 错误:[执行 SQL 任务] 错误:执行查询

Oracle执行插入SQL,执行报字符过长错误