powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL for Visual Studio (AUTO_INCREMENT)
25 сообщений из 51, страница 1 из 3
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134584
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую MS Visual Studio 2013 (Professional edition), MySQL for Visual Studio 1.2.5 и MySQL 5.5.46 (Ubuntu).
Пришлось сделать перенос большого объема связанных между собой данных в MySQL и заметил одну принципиальную ошибку MySQL for Visual Studio (или я что-то недосмотрел): при заполнении (функция Fill соответствующего TableAdapter) данных таблицы в VS из MySQL данные заполняются, а вот информация о AUTO_INCREMENT из MySQL в соответствующее поле AutoIncrementSeed колонки таблицы VS не переносится, что приводит к катастрофическим последствиям.
Подскажите, что я делаю не так и как мне получить информацию о AUTO_INCREMENT (имеется в виду следующее свободное значение поля) в VS.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134598
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561,

Подозреваю, это надо спрашивать в подфоруме по C/C++.
Перенести топик?
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134674
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftgai561,
Подозреваю, это надо спрашивать в подфоруме по C/C++.
Перенести топик?
Я думаю, не стоит, т.к. MySQL for Visual Studio разработка группы MySQL и вопрос к ним, а не к MS.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134679
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561соответствующее поле AutoIncrementSeed колонки таблицы
MySQL такого слова не знает.

gai561что приводит к катастрофическим последствиям
Значит, база спроектирована неверно.

gai561как мне получить информацию о AUTO_INCREMENT (имеется в виду следующее свободное значение поля)
Его и на сервере не удастся получить... просто потому что после его получения каким-либо способом оно изменится.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134688
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561,

Дело не в том, чья это разработка, а в том, где находятся люди, которые это используют и могут что-то подсказать.
Ну да как хотите.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134709
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объясню подробнее:
в VS данные из MySQL помещаются в таблицы в памяти на локальном компе.
Добавление, изменение и удаление данных также производится на локальном компе вплоть до того момента, пока не дашь команду на перенос данных на сервер MySQL.
Теперь представьте, что есть таблица 1 с ключевым автоинкрементным полем (первое свободное например 99), таблица 2 с ключевым автоинкрементным полем (первое свободное например 999) и перекрестная таблица 3 со ссылками на таблицу 1 и таблицу 2.
По факту я:
1).
- добавляю строку в таблицу 1, поле = 1 (т.к. я не сном ни духом о 99)
- добавляю строку в таблицу 2, поле = 1 (т.к. я не сном ни духом о 99)
- добавляю строку в таблицу 3, поле1 = 1, поле2 = 1
2.) передаю информацию в MySQL, а он
- меняет значение поля в таблице 1 на 99
- меняет значение поля в таблице 2 на 999
после чего ругается о нарушении структуры данных при сохранении таблицы 3 (что естественно)
Так что БД спроектирована правильно, а ошибка на основе недостаточных данных, ведь знай я о 99 и 999, ошибки не было бы.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134714
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561БД спроектирована правильно, а ошибка на основе недостаточных данныхааа... ну дык это ошибка клиента. Вернее, того, кто его пишет. Эти твои 99 и 999 существуют только у клиента. В момент копирования данных на сервер должны быть получены с него присвоенные ID вставленным в таблицы 1 и 2 данным, и внесены соотв. изменения в данные для вставки в таблицу 3. В назначении уникальных идентификаторов сервер - первичен, клиент под него должен подстраиваться. А вовсе даже не наоборот.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134728
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, но это чушь. Исходя из этой логики удаленная автономная работа с БД в принципе невозможна. Разъясню: Вы предлагаете мне при каждом изменении любой единицы данных обращаться к серверу на запись этих изменений и повторному их считыванию - представляете, какой излишек трафика и расхода ресурсов сервера.
Да я лучше на время обработки буду монопольно использовать БД.
А задачка решается элементарно - MySQL for Visual Studio (а это по сути драйвер) кроме самих данных таблиц должен дать информацию и об AUTU_INCREMENT - и тогда проблемы нет как таковой.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134734
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Вы предлагаете мне при каждом изменении любой единицы данных обращаться к серверу на запись этих изменений и повторному их считыванию - представляете, какой излишек трафика и расхода ресурсов сервера.Не при каждом изменении, а после каждой вставки.

Существует специальная функция LAST_INSERT_ID() для получения последнего сгенеренного автоинкремента в текущей сессии.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134744
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftСуществует специальная функция LAST_INSERT_ID() для получения последнего сгенеренного автоинкремента в текущей сессии.
Посмотрев Вашу ссылку (извините, но по английски "читаю и перевожу со словарем") не получил уверенности, что это именно последний генерированный код (посмотрите пример группового добавления, где max=4, а значение функции=2).
Но за предложение большое спасибо.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134751
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561miksoftСуществует специальная функция LAST_INSERT_ID() для получения последнего сгенеренного автоинкремента в текущей сессии.
Посмотрев Вашу ссылку (извините, но по английски "читаю и перевожу со словарем") не получил уверенности, что это именно последний генерированный код (посмотрите пример группового добавления, где max=4, а значение функции=2).Да, при вставке сразу нескольких записей эта функция возвращает автоинкремент для первой из них.
Поэтому, если нужны все значения, вставку придется выполнять по одной записи.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134763
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Исходя из этой логики удаленная автономная работа с БД в принципе невозможна.
Вот это, извините, и есть чушь. Работайте в своё удовольствие, пока не померзеет...

Но вот когда возникает желание выдать результаты своей работы обратно на сервер, категорически нельзя игнорировать то, что состояние данных на сервере имеет полное право измениться. И надо приспосабливать свои результаты к тому, что есть на сервере, а не наоборот. Дабы не наломать дров.

gai561Посмотрев Вашу ссылку (извините, но по английски "читаю и перевожу со словарем") не получил уверенности, что это именно последний генерированный код (посмотрите пример группового добавления, где max=4, а значение функции=2)Попробуйте в дополнение к чтению и переводу до конца понять то, что прочитано и переведено.

gai561Да я лучше на время обработки буду монопольно использовать БД.
Пжалста... тогда все проблемы, описанные выше, уйдут. А заодно придёт горячая благодарность от других пользователей базы. Особенно от тех, кого срезали на середине сессии.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134903
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaНо вот когда возникает желание выдать результаты своей работы обратно на сервер... Дабы не наломать дров.
AkinaПжалста... тогда все проблемы, описанные выше, уйдут. А заодно придёт горячая благодарность от других пользователей базы. Особенно от тех, кого срезали на середине сессии.
Извините, но Вы далеки от реальности. Когда я, как администратор, делаю миграцию большого объема данных с одного сервера на другой, стараюсь по максимуму использовать ресурсы локального компьютера, а не загружать сервер. При этом я монополизирую одну БД (пользователям которой действительно придется подождать), зато пользователи других БД скажут мне спасибо за разгруженный сервер.
gai561Попробуйте в дополнение к чтению и переводу до конца понять то, что прочитано и переведено.
А о чем это, я не понял.
На этом этот никому ненужный спор "зачем" я прекращаю. Каждый делает то, что нужно ему.
Прошу помощи в поставленном мной в первом посте вопросе.
Заранее благодарен за помощь.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134961
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561я, как администратор, делаю миграцию большого объема данных с одного сервера на другойПредлагаю различать обычную работу пользователей (при которой той же функции LAST_INSERT_ID() вполне достаточно) и "миграцию большого объема данных".
Сейчас о чем именно речь?
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39134970
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Когда я, как администратор, делаю миграцию большого объема данных с одного сервера на другой, стараюсь по максимуму использовать ресурсы локального компьютера, а не загружать сервер.

При миграции с сервера на сервер я вообще не понимаю, для чего можно "использовать ресурсы локального компьютера". С него идёт только управление, а данные напрямую гонятся с одного сервера на другой.
Или это ни разу не миграция...
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135070
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получил предложение на другом форуме:
Код: sql
1.
SHOW TABLE STATUS LIKE 'table_name'


ну это уже вариант, хотя для VS не самый приятный. Может есть решение попроще?
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135086
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Получил предложение на другом форуме:
Код: sql
1.
SHOW TABLE STATUS LIKE 'table_name'



ну это уже вариант, хотя для VS не самый приятный.И что вы собираетесь там увидеть по теме топика?
Ну если только оценить объем данных для миграции...gai561Может есть решение попроще?Решение какой именно задачи?
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135125
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135128
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД.Про LAST_INSERT_ID() я уже писал.
Если не лочить таблицу, то другого способа нет.

Если лочить - можно взять MAX(ID) из таблицы. Но это костыль.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135129
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД.А смысл? даже немедленно после получения значения выполненный INSERT запросто может вставить ДРУГОЕ значение.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135131
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftgai561Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД.Про LAST_INSERT_ID() я уже писал.
Если не лочить таблицу, то другого способа нет.

Если лочить - можно взять MAX(ID) из таблицы. Но это костыль.Поправка - это была речь про последнюю вставленную запись.
А первое свободное значение - только лочить таблицу и брать MAX(ID)+1. Но, повторюсь, это костыль.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135132
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, но доступ к БД можно ограничить.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135138
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft
Код: sql
1.
SHOW TABLE STATUS LIKE 'table_name'

И что вы собираетесь там увидеть по теме топика? Ну если только оценить объем данных для миграции... Хочу заступится за данное решение - если Вы попробуете данный запрос, то увидите одно из полей Auto_Increment.
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135156
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gai561,
и чем оно будет отличаться от last insert id ?
...
Рейтинг: 0 / 0
MySQL for Visual Studio (AUTO_INCREMENT)
    #39135169
gai561
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем, что если последнее добавление было для нескольких записей, то Вы получите ответ, отличный от реального.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 1 из 3
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL for Visual Studio (AUTO_INCREMENT)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]