2.4.1. fejezet, Szerver hibalehetőségek és megoldások
Beküldte pzoli - 2011, május 16 - 3:33du
A program UTF-8 karakterkészletet alkalmaz a kommunikációra, és az adatbázis szintén UTF-8 formában tárolja az adatokat.
Az alábbi hiba MySQL 5.0.45 szerveren ConnectorJ 5.1.5 verzióval jelentkezett:
if ((metaData != null) && (resultSet != null) && (resultSet.getRow() > 0) && (!resultSet.isAfterLast()) && (!resultSet.isBeforeFirst())) { Object[] record = new Object[metaData.getColumnCount()]; for (int j = 1; j <= metaData.getColumnCount(); j++) try { if (metaData.getColumnType(j) == java.sql.Types.TIMESTAMP) record[j - 1] = resultSet.getString(j);// TIMESTAMP else record[j - 1] = resultSet.getObject(j); // MYSQL BUG ? Első sort átalakítja, aztán minden sorra // Cannot convert value '2008-02-29 00:00:00' from column 9 // to TIMESTAMP. } catch (Exception ex) { ex.printStackTrace(); } result = new UnifiedRecordType(record, recordDescriptor); }
Az SQL tábla szerkezete az alábbi:
CREATE TABLE demand_arlista( kategoria_id INT(10) UNSIGNED NOT NULL, kod1 VARCHAR(16) NOT NULL, kod2 VARCHAR(16) NOT NULL, megnevezes text CHARACTER SET utf8 COLLATE utf8_hungarian_ci, allapot CHAR NOT NULL, partner_netto INTEGER NOT NULL, fogyaszto_netto INTEGER NOT NULL, fogyaszto_brutto INTEGER NOT NULL, createdDate DATETIME NOT NULL, modifiedDate DATETIME, validfrom DATETIME NOT NULL, creatorUserId INT(10) UNSIGNED NOT NULL, lastModifierUserId INT(10) UNSIGNED, PRIMARY KEY (kategoria_id,kod2), INDEX `creatoruserid_idx` (creatorUserId), INDEX `lastmodifieruserid_idx` (lastModifierUserId), INDEX `kod1_idx` (kod1) )ENGINE=InnoDB DEFAULT CHARSET=utf8;
A kiadott select parancs pedig:
SELECT kategoria_id, kod1, kod2, megnevezes, allapot, partner_netto, fogyaszto_netto, fogyaszto_brutto, validfrom FROM demand_arlista WHERE kategoria_id = ?
ahol a where feltételben a paraméter egy egész szám.
Megoldás: töltsd le az 5.1.6-os vagy újabb ConnectorJ csomagot, amelyben javították a hibát.
- A hozzászóláshoz be kell jelentkezni