B
Bumsys
I run sql query:
public final void insertFileSybase(final int id, final String folder,
final String filename, final File file, final boolean
isPacked,
final Timestamp lastModified, final Timestamp lastWritten,
final String checkSum, final int backupNo, final int type,
final boolean isDeleted, final int clientId)
throws SQLException, IOException {
// TODO checksum is null
boolean isAUResChecksumColumnExist =
manager.getConnectionInfo()
.isAUResChecksumColumnExist();
int deleted = isDeleted ? 1 : 0;
String query = null;
if (isAUResChecksumColumnExist) {
query = "insert into "
+ getFullTableName(Tables.RESOURCE)
+ " (application_id, backupno, path, name,
contents, last_written, last_modified, packed, checksum, type,
deleted, client_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
} else {
query = "insert into "
+ getFullTableName(Tables.RESOURCE)
+ " (application_id, backupno, path, name,
contents, last_written, last_modified, packed, type, deleted,
client_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
}
logQuery(query);
logQueryParameter("application_id = " + id);
logQueryParameter("backupno = " + backupNo);
logQueryParameter("path = " + makePathToDB(folder));
logQueryParameter("name = " + filename);
logQueryParameter("last_written = " + lastWritten);
logQueryParameter("last_modified = " + lastModified);
logQueryParameter("packed = " + (isPacked ? 1 : 0));
if (isAUResChecksumColumnExist) {
logQueryParameter("checkSum = " + checkSum);
}
logQueryParameter("type = " + type);
logQueryParameter("deleted = " + deleted);
logQueryParameter("client_id = " + clientId);
PreparedStatement ps =
manager.getConnection().prepareStatement(query);
ps.setInt(1, id);
ps.setInt(2, backupNo);
ps.setString(3, makePathToDB(folder));
ps.setString(4, filename);
// TODO long
int len = (int) file.length();
log.info("file: " + file.getAbsolutePath());
if (isDeleted && !file.exists()) {
ps.setNull(5, Types.LONGVARBINARY);
} else if (file.exists() && len == 0) {
ps.setNull(5, Types.LONGVARBINARY);
} else {
InputStream in = new FileInputStream(file);
ps.setBinaryStream(5, in, len);
}
ps.setTimestamp(6, lastWritten);
ps.setTimestamp(7, lastModified);
ps.setInt(8, isPacked ? 1 : 0);
if (isAUResChecksumColumnExist) {
ps.setString(9, checkSum);
}
int typeNumber = isAUResChecksumColumnExist ? 10 : 9;
ps.setInt(typeNumber, type);
int deletedNumber = isAUResChecksumColumnExist ? 11 : 10;
ps.setInt(deletedNumber, deleted);
int clientIdNumber = isAUResChecksumColumnExist ? 12 : 11;
ps.setInt(clientIdNumber, clientId);
int numberOfRows = ps.executeUpdate();
logNumberOfRows(numberOfRows);
ps.close();
}
and when run ps.executeUpdate(), i.e. run sql query and then I have
error: There is not enough procedure cache to run this procedure,
trigger, or
SQL batch. Retry later, or ask your SA to reconfigure ASE with more
procedure cache.
What can do that to solve this problem?
public final void insertFileSybase(final int id, final String folder,
final String filename, final File file, final boolean
isPacked,
final Timestamp lastModified, final Timestamp lastWritten,
final String checkSum, final int backupNo, final int type,
final boolean isDeleted, final int clientId)
throws SQLException, IOException {
// TODO checksum is null
boolean isAUResChecksumColumnExist =
manager.getConnectionInfo()
.isAUResChecksumColumnExist();
int deleted = isDeleted ? 1 : 0;
String query = null;
if (isAUResChecksumColumnExist) {
query = "insert into "
+ getFullTableName(Tables.RESOURCE)
+ " (application_id, backupno, path, name,
contents, last_written, last_modified, packed, checksum, type,
deleted, client_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
} else {
query = "insert into "
+ getFullTableName(Tables.RESOURCE)
+ " (application_id, backupno, path, name,
contents, last_written, last_modified, packed, type, deleted,
client_id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
}
logQuery(query);
logQueryParameter("application_id = " + id);
logQueryParameter("backupno = " + backupNo);
logQueryParameter("path = " + makePathToDB(folder));
logQueryParameter("name = " + filename);
logQueryParameter("last_written = " + lastWritten);
logQueryParameter("last_modified = " + lastModified);
logQueryParameter("packed = " + (isPacked ? 1 : 0));
if (isAUResChecksumColumnExist) {
logQueryParameter("checkSum = " + checkSum);
}
logQueryParameter("type = " + type);
logQueryParameter("deleted = " + deleted);
logQueryParameter("client_id = " + clientId);
PreparedStatement ps =
manager.getConnection().prepareStatement(query);
ps.setInt(1, id);
ps.setInt(2, backupNo);
ps.setString(3, makePathToDB(folder));
ps.setString(4, filename);
// TODO long
int len = (int) file.length();
log.info("file: " + file.getAbsolutePath());
if (isDeleted && !file.exists()) {
ps.setNull(5, Types.LONGVARBINARY);
} else if (file.exists() && len == 0) {
ps.setNull(5, Types.LONGVARBINARY);
} else {
InputStream in = new FileInputStream(file);
ps.setBinaryStream(5, in, len);
}
ps.setTimestamp(6, lastWritten);
ps.setTimestamp(7, lastModified);
ps.setInt(8, isPacked ? 1 : 0);
if (isAUResChecksumColumnExist) {
ps.setString(9, checkSum);
}
int typeNumber = isAUResChecksumColumnExist ? 10 : 9;
ps.setInt(typeNumber, type);
int deletedNumber = isAUResChecksumColumnExist ? 11 : 10;
ps.setInt(deletedNumber, deleted);
int clientIdNumber = isAUResChecksumColumnExist ? 12 : 11;
ps.setInt(clientIdNumber, clientId);
int numberOfRows = ps.executeUpdate();
logNumberOfRows(numberOfRows);
ps.close();
}
and when run ps.executeUpdate(), i.e. run sql query and then I have
error: There is not enough procedure cache to run this procedure,
trigger, or
SQL batch. Retry later, or ask your SA to reconfigure ASE with more
procedure cache.
What can do that to solve this problem?