K
Kee_Keekkenen
о базе mysql ничего не знаю, так что не пинайте, как говорится жестко..
таблица с данными создавалась таким образом
данные добавляются методом на java
суть в том, что int res = statement.executeUpdate(); возвращает 1, что говорит количестве обновленных записей, однако новых записей не появляется..
тем не менее некоторая часть записей была создана данным методом, в чем тут может быть дело ?
в catch ничего не попадает, проверено..
я вижу только принты типа:
create org id:240559042 name:O0559042 legal:O055 parentId:24055 result:1
create org id:113002054 name:B3002054 legal:B300 parentId:11300 result:1
create org id:113002022 name:B3002022 legal:B300 parentId:11300 result:1
но записей с такими id нет ?!
изначально java код с многопоточной реализацией, однако в однопоточном режиме тоже самое..
что-то похожее видел на багтрекинге mysql, однако пишут что пификсили проблему..
таблица с данными создавалась таким образом
Код:
CREATE TABLE IT_ORGANIZATION (
F_ID INT NOT NULL AUTO_INCREMENT,
F_SAP_ID INT NOT NULL,
F_SAP_MODIFIED DATE,
F_ENTER_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
F_NAME VARCHAR(300) NOT NULL,
F_SHORT_NAME VARCHAR(100) NOT NULL,
F_ACTION_TYPE VARCHAR(10) NOT NULL,
F_LEGAL_CODE VARCHAR(20),
F_LEGAL INT,
F_XML_SOURCE INT NOT NULL,
F_PARENT_SAP_ID INT,
F_SYNC_FLAG INT DEFAULT 0,
PRIMARY KEY (F_ID)
) ENGINE=InnoDB;
CREATE UNIQUE INDEX idx_unique_key_itorganization ON IT_ORGANIZATION (F_LEGAL, F_SAP_ID);
CREATE UNIQUE INDEX idx_sapid_itorganization ON IT_ORGANIZATION (F_SAP_ID);
CREATE INDEX idx_itorganization_parentid ON IT_ORGANIZATION (F_PARENT_SAP_ID ASC);
CREATE INDEX idx_pk_itorganization ON IT_ORGANIZATION (F_ID ASC);
C++:
private void createOrg(Connection connection, String legal, int location, boolean main) throws Exception {
String SQL = "INSERT INTO IT_ORGANIZATION " +
"(F_SAP_ID, F_NAME, F_SHORT_NAME, F_LEGAL_CODE, F_PARENT_SAP_ID, F_ACTION_TYPE, F_LEGAL, " +
"F_XML_SOURCE, F_SAP_MODIFIED, F_SYNC_FLAG) " +
"VALUES (?, ?, ?, ?, ?, 'NEW', 0, 0, CURDATE(), 0)";
PreparedStatement statement = null;
try {
long id = main ? createMainId(legal) : createId(legal, location);
long parentId = main ? 0 : createMainId(legal);
String name = main ? legal : legal + convertLocation(location);
statement = connection.prepareStatement(SQL);
statement.setLong(1, id);
statement.setString(2, name);
statement.setString(3, name);
statement.setString(4, legal);
statement.setLong(5, parentId);
int res = statement.executeUpdate();
System.out.println("create org id:" + id + " name:" + name + " legal:" + legal +" parentId:" + parentId + " " +
"result:" + res);
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
суть в том, что int res = statement.executeUpdate(); возвращает 1, что говорит количестве обновленных записей, однако новых записей не появляется..
тем не менее некоторая часть записей была создана данным методом, в чем тут может быть дело ?
в catch ничего не попадает, проверено..
я вижу только принты типа:
create org id:240559042 name:O0559042 legal:O055 parentId:24055 result:1
create org id:113002054 name:B3002054 legal:B300 parentId:11300 result:1
create org id:113002022 name:B3002022 legal:B300 parentId:11300 result:1
но записей с такими id нет ?!
изначально java код с многопоточной реализацией, однако в однопоточном режиме тоже самое..
что-то похожее видел на багтрекинге mysql, однако пишут что пификсили проблему..