Задавайте вопросы, мы ответим
Вы не зашли.
Использую 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.
Неактивен
Посмотрите тут.
Следующее значение autoincrement http://sqlinfo.ru/forum/viewtopic.php?id=4217
Можно посмотреть одно из полей результата запрос
Неактивен
Извините, но по английски "читаю и перевожу со словарем". Знал бы аглицкий, задал бы вопрос прямо на mysql.com. Предложный Вами вариант реализуем, но какой "огород городить" придется в Visual Studio да еще и для каждой таблицы. Хотелось бы услышать ответ от рускоязычных людей, близких к группе MySQL - почему это не реализует MySQL for Visual Studio (хотя может и реализует, а у меня кривые руки) - как по мне, так это его прямая функциональность.
Отредактированно gai561 (22.12.2015 20:47:27)
Неактивен
Ок, давайте попробуем со словарем.
check in the dataset designer if your ID key column's property AutoIncrement property is set to true. If it's not, set it to true and rebuild your tableadapters...
Смысл такой, что
проверьте в свойствах датасета, стоит ли свойство AutoIncrement в true. Если нет, то поставьте в тру и инициализируйте снова Ваш адаптер.
Почему не реализует команда MySQL for Visual Studio - попробуйте их спросить )), если они Вам ответят - обязательно поделитесь с нами ;-).
Неактивен
Проблема в том, что свойство AutoIncrement имеет значение true, вот только значение свойства AutoIncrementSeed не подтягивается из базы данных, а его нельзя знать заранее.
Неактивен
AutoIncrementSeed не имеет отношения к MySQL, попробуйте правда что на форуме разработчиков Mysql For Visual Studio спросить.
Относительно получения следующего значения - посмотрите внимательно код ниже, сразу прояснится, как получить следующее значение (11).
А вообще - почему бы не перенести данные стандартными путями? mysqldump и последующий импорт? зачем городить этот огород из visual studio и так далее?
mysql> show create table tt; +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | tt | CREATE TABLE `tt` ( `id` int(11) NOT NULL AUTO_INCREMENT, `val` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 | +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select * from tt; +----+------+ | id | val | +----+------+ | 1 | 100 | | 2 | 90 | | 3 | 80 | | 4 | 70 | | 5 | 60 | | 6 | 50 | | 7 | 40 | | 8 | 30 | | 9 | 20 | | 10 | 10 | +----+------+ 10 rows in set (0.00 sec) mysql> SHOW TABLE STATUS LIKE 'tt'\G *************************** 1. row *************************** Name: tt Engine: MyISAM Version: 10 Row_format: Fixed Rows: 10 Avg_row_length: 9 Data_length: 90 Max_data_length: 2533274790395903 Index_length: 2048 Data_free: 0 Auto_increment: 11 Create_time: 2014-09-03 19:30:45 Update_time: 2014-09-03 19:33:17 Check_time: NULL Collation: latin1_swedish_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec)
Неактивен
Да я же не против - предложенный Вами вариант реализуем. Согласен с тем, что AutoIncrementSeed из VS, но ведь есть его аналог в MySQL - Ваш вариант лишь подтверждает это. И вызывает удивление, что при заполнении DataTable в VS при помощи MySQL for Visual Studio не переносится это значение.
Добавлю - я, честно говоря, даже не предполагал, что свойство AutoIncrementSeed в VS не заполняется при заполнении DataTable в VS при помощи MySQL for Visual Studio.
Отредактированно gai561 (22.12.2015 21:55:43)
Неактивен
Публикую свое решение (на базе предложения deadka), оно универсально - бери себе и вставляй в свой проект:
Отредактированно gai561 (23.12.2015 16:17:09)
Неактивен
Браво! Однако продолжу занудно давить на свое предложение - всерьез задуматься о переносе данных традиционными путями (mysqldump и иже). Что-то мне подсказывает, что попытка анализировать следующее значение из show table status рано или поздно больно выстрелит в ногу.
Неактивен