|
|
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
Использую 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:22:07 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561, Подозреваю, это надо спрашивать в подфоруме по C/C++. Перенести топик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:24:59 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
miksoftgai561, Подозреваю, это надо спрашивать в подфоруме по C/C++. Перенести топик? Я думаю, не стоит, т.к. MySQL for Visual Studio разработка группы MySQL и вопрос к ним, а не к MS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:55:16 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561соответствующее поле AutoIncrementSeed колонки таблицы MySQL такого слова не знает. gai561что приводит к катастрофическим последствиям Значит, база спроектирована неверно. gai561как мне получить информацию о AUTO_INCREMENT (имеется в виду следующее свободное значение поля) Его и на сервере не удастся получить... просто потому что после его получения каким-либо способом оно изменится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 14:59:00 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561, Дело не в том, чья это разработка, а в том, где находятся люди, которые это используют и могут что-то подсказать. Ну да как хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:05:18 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
Объясню подробнее: в 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, ошибки не было бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:15:01 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561БД спроектирована правильно, а ошибка на основе недостаточных данныхааа... ну дык это ошибка клиента. Вернее, того, кто его пишет. Эти твои 99 и 999 существуют только у клиента. В момент копирования данных на сервер должны быть получены с него присвоенные ID вставленным в таблицы 1 и 2 данным, и внесены соотв. изменения в данные для вставки в таблицу 3. В назначении уникальных идентификаторов сервер - первичен, клиент под него должен подстраиваться. А вовсе даже не наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:18:54 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
Извините, но это чушь. Исходя из этой логики удаленная автономная работа с БД в принципе невозможна. Разъясню: Вы предлагаете мне при каждом изменении любой единицы данных обращаться к серверу на запись этих изменений и повторному их считыванию - представляете, какой излишек трафика и расхода ресурсов сервера. Да я лучше на время обработки буду монопольно использовать БД. А задачка решается элементарно - MySQL for Visual Studio (а это по сути драйвер) кроме самих данных таблиц должен дать информацию и об AUTU_INCREMENT - и тогда проблемы нет как таковой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:29:39 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561Вы предлагаете мне при каждом изменении любой единицы данных обращаться к серверу на запись этих изменений и повторному их считыванию - представляете, какой излишек трафика и расхода ресурсов сервера.Не при каждом изменении, а после каждой вставки. Существует специальная функция LAST_INSERT_ID() для получения последнего сгенеренного автоинкремента в текущей сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:39:02 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
miksoftСуществует специальная функция LAST_INSERT_ID() для получения последнего сгенеренного автоинкремента в текущей сессии. Посмотрев Вашу ссылку (извините, но по английски "читаю и перевожу со словарем") не получил уверенности, что это именно последний генерированный код (посмотрите пример группового добавления, где max=4, а значение функции=2). Но за предложение большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:53:17 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561miksoftСуществует специальная функция LAST_INSERT_ID() для получения последнего сгенеренного автоинкремента в текущей сессии. Посмотрев Вашу ссылку (извините, но по английски "читаю и перевожу со словарем") не получил уверенности, что это именно последний генерированный код (посмотрите пример группового добавления, где max=4, а значение функции=2).Да, при вставке сразу нескольких записей эта функция возвращает автоинкремент для первой из них. Поэтому, если нужны все значения, вставку придется выполнять по одной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 15:58:08 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561Исходя из этой логики удаленная автономная работа с БД в принципе невозможна. Вот это, извините, и есть чушь. Работайте в своё удовольствие, пока не померзеет... Но вот когда возникает желание выдать результаты своей работы обратно на сервер, категорически нельзя игнорировать то, что состояние данных на сервере имеет полное право измениться. И надо приспосабливать свои результаты к тому, что есть на сервере, а не наоборот. Дабы не наломать дров. gai561Посмотрев Вашу ссылку (извините, но по английски "читаю и перевожу со словарем") не получил уверенности, что это именно последний генерированный код (посмотрите пример группового добавления, где max=4, а значение функции=2)Попробуйте в дополнение к чтению и переводу до конца понять то, что прочитано и переведено. gai561Да я лучше на время обработки буду монопольно использовать БД. Пжалста... тогда все проблемы, описанные выше, уйдут. А заодно придёт горячая благодарность от других пользователей базы. Особенно от тех, кого срезали на середине сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 16:04:14 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
AkinaНо вот когда возникает желание выдать результаты своей работы обратно на сервер... Дабы не наломать дров. AkinaПжалста... тогда все проблемы, описанные выше, уйдут. А заодно придёт горячая благодарность от других пользователей базы. Особенно от тех, кого срезали на середине сессии. Извините, но Вы далеки от реальности. Когда я, как администратор, делаю миграцию большого объема данных с одного сервера на другой, стараюсь по максимуму использовать ресурсы локального компьютера, а не загружать сервер. При этом я монополизирую одну БД (пользователям которой действительно придется подождать), зато пользователи других БД скажут мне спасибо за разгруженный сервер. gai561Попробуйте в дополнение к чтению и переводу до конца понять то, что прочитано и переведено. А о чем это, я не понял. На этом этот никому ненужный спор "зачем" я прекращаю. Каждый делает то, что нужно ему. Прошу помощи в поставленном мной в первом посте вопросе. Заранее благодарен за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:17:30 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561я, как администратор, делаю миграцию большого объема данных с одного сервера на другойПредлагаю различать обычную работу пользователей (при которой той же функции LAST_INSERT_ID() вполне достаточно) и "миграцию большого объема данных". Сейчас о чем именно речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:45:18 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561Когда я, как администратор, делаю миграцию большого объема данных с одного сервера на другой, стараюсь по максимуму использовать ресурсы локального компьютера, а не загружать сервер. При миграции с сервера на сервер я вообще не понимаю, для чего можно "использовать ресурсы локального компьютера". С него идёт только управление, а данные напрямую гонятся с одного сервера на другой. Или это ни разу не миграция... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 17:52:54 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
Получил предложение на другом форуме: Код: sql 1. ну это уже вариант, хотя для VS не самый приятный. Может есть решение попроще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 19:34:31 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561Получил предложение на другом форуме: Код: sql 1. ну это уже вариант, хотя для VS не самый приятный.И что вы собираетесь там увидеть по теме топика? Ну если только оценить объем данных для миграции...gai561Может есть решение попроще?Решение какой именно задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:04:41 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:43:13 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД.Про LAST_INSERT_ID() я уже писал. Если не лочить таблицу, то другого способа нет. Если лочить - можно взять MAX(ID) из таблицы. Но это костыль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:46:46 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД.А смысл? даже немедленно после получения значения выполненный INSERT запросто может вставить ДРУГОЕ значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:46:58 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
miksoftgai561Задача - получить значение AUTO_INCREMENT (первое свободное значение) таблицы на момент обращения к БД.Про LAST_INSERT_ID() я уже писал. Если не лочить таблицу, то другого способа нет. Если лочить - можно взять MAX(ID) из таблицы. Но это костыль.Поправка - это была речь про последнюю вставленную запись. А первое свободное значение - только лочить таблицу и брать MAX(ID)+1. Но, повторюсь, это костыль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:48:43 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
Согласен, но доступ к БД можно ограничить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 20:49:45 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
miksoft Код: sql 1. И что вы собираетесь там увидеть по теме топика? Ну если только оценить объем данных для миграции... Хочу заступится за данное решение - если Вы попробуете данный запрос, то увидите одно из полей Auto_Increment. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 21:03:22 |
|
||
|
MySQL for Visual Studio (AUTO_INCREMENT)
|
|||
|---|---|---|---|
|
#18+
gai561, и чем оно будет отличаться от last insert id ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2015, 21:27:47 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39134674&tid=1832341]: |
0ms |
get settings: |
15ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
88ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 471ms |

| 0 / 0 |
