MySQL Transaction - элементы вставляются в обратном порядке - PullRequest
0 голосов
/ 19 января 2012

Я делаю транзакцию:

$dbh->beginTransaction();

$i = 0;
while ($i < $total_items_num) {
  $insert_data->execute(
    array( $item_data[ $i ],
           $category,
           $price,
    )
  );

  $i++;
}

$dbh->commit();

На моем локальном компьютере элементы вставляются в правильном порядке, например, с 1-го по 7-е.Но на рабочем сервере он вставляется в обратном порядке, например, с 7-го по 1-е.

В чем может быть причина для этого, некоторые настройки мне нужно изменить?

РЕДАКТИРОВАТЬ: Вотзапрос:

    $insert_data = $dbh->prepare ("
    INSERT INTO goods (
    item_id,
    item_data,
    category,
    price
    )
    VALUES (NULL, ?, ?, ?);
    ");

и порядок элементов должен был быть от 0 до любого числа.Например, 0-6, 0-15 ...

Итак, что я хотел бы (и что работает для меня локально), так это то, что item_id (который является первичным ключом) применяется к элементам в том же порядке, напримересли у 1-го элемента item_id 1025, то у второго должен быть 1026.

Но что происходит, если они вставляются в обратном порядке.

Спасибо за предложения и извините, если вопрос был расплывчатым, надеюсь, лучшеТеперь.

Ответы [ 2 ]

1 голос
/ 19 января 2012

Я бы посоветовал проверить несколько вещей:

  1. Имеют ли ваши разработчики и производственная среда одинаковые индексы в соответствующей таблице?

  2. Если нет, проверьте, является ли ваш запрос проверки в обоих случаях одинаковым.

Если в обоих случаях ваш ответ положительный, то правило одно и то же.комментарии указывают: записи таблицы СУБД в результирующих наборах не обязательно «упорядочены», если вы не используете ORDER BY в своих запросах или не настроили индексирование.

0 голосов
/ 19 января 2012

В базах данных SQL отсутствует концепция внутреннего порядка строк.Порядок применяется только тогда, когда вы явно указываете в запросе предложение ORDER BY.При отсутствии ORDER BY ядру базы данных разрешается возвращать строки в любом порядке, который он выбирает.

Что касается нумерации последовательностей, вы не показали, как определяется таблица или как $item_dataзаполнен, так что этот вопрос пока не отвечает.

...