Проблема С Insert

Тема в разделе "SQL", создана пользователем Kee_Keekkenen, 4 май 2013.

  1. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    о базе mysql ничего не знаю, так что не пинайте, как говорится жестко..

    таблица с данными создавалась таким образом

    Код (LotusScript):
    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);
    данные добавляются методом на java

    Код (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, однако пишут что пификсили проблему..
     
  2. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    Откуда знаете что нет?
     
  3. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    нет, потому что их нет в базе..
    в общем разобрался.. код не я писал, да и не знаком я с работой с sql..
    проблема была, в том что соммиты не отрабатывали, т.к. явно не вызывались, т.к. коннекшенов создавалось много для разных манипуляций, а включение автокоммитов было пропущено..
     
Загрузка...
Похожие Темы - Проблема Insert
  1. c0de3r
    Ответов:
    4
    Просмотров:
    108
  2. DobermannTT
    Ответов:
    10
    Просмотров:
    128
  3. SoulPaladin
    Ответов:
    3
    Просмотров:
    114
  4. Artael
    Ответов:
    1
    Просмотров:
    106
  5. ENSLER
    Ответов:
    0
    Просмотров:
    100

Поделиться этой страницей