Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Autoincrement, проблема
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 3 месяца, 27 дней
Карма: 1




Парни, привет. Подскажите, в чем может быть проблема.

Очищаю таблицу методом
SET FOREIGN_KEY_CHECKS = 0; 
TRUNCATE TABLE `users`;
SET FOREIGN_KEY_CHECKS = 1;

В поле AUTOINCREMENT значение 1. Все пока нормально.

Далее делаю перенос данных из старой таблицы в новую.
INSERT INTO `user` (`email`, `password`, `date_reg`) 
SELECT `login`, `password`, `date_reg` FROM `firma`


После этого поле AI равно 512. Хотя вставляется 300 строк (ID последний 300). Произошло это после того, как я вручную в phpma указал цифру 1.


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 3 месяца, 27 дней
Карма: 1




Мужики, никто не знает в чем может быть проблема? Или не обращать внимание?
Вдруг потом это аукнется где-то..


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15561
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 2 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


Цитата (maximka787 @ 6.06.2016 - 13:22)
Произошло это после того, как я вручную в phpma указал цифру 1.

А зачем ты это сделал? После TRUNCATE он сам станет 1.

И зачем тут это:
SET FOREIGN_KEY_CHECKS = 0;

У тебя внешние ключи есть?


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 3 месяца, 27 дней
Карма: 1




twin
Да, у меня есть внешние ключи, которые на хостинге не дают сделать TRUNCATE, хотя все зависимые таблицы пустые.

Вообще на локальном компе, все работает хорошо. Когда импортирую БД то она там даже очищается, хоть и зависимые таблицы не пустые. То есть происходит нормальное удаление всех записей. А на хостинге такая фигня.
поэтому и блокирую проверку ключей внешних.


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15561
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 2 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


Вообще навскидку не могу сказать. Дай дампик, посмотрим.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 3 месяца, 27 дней
Карма: 1




CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL auto_increment,
`email` varchar(40) NOT NULL,
`passwd` char(40) NOT NULL,
`firma` int(10) unsigned default NULL,
`date_reg` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `firma` (`firma`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `firma` (
`id` int(10) unsigned NOT NULL auto_increment,
`login` varchar(40) NOT NULL,
`passwd` char(40) NOT NULL,
`date_reg` date NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `login` (`login`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `users` ADD CONSTRAINT `users_ibfk_1` FOREIGN KEY (`firma`) REFERENCES `firma` (`id`);


/* запрос */
INSERT INTO `users` (`email`, `passwd`, `firma`, `date_reg`)
SELECT `login`, `passwd2`, `id`, `date_reg` FROM `firma`


Если там сложно и сразу так не видно в чем причина, то я дуаю оставлю всё как есть, проблема не фатальная, просто непонятно поведение AI


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15561
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 2 дня
Карма: 299

Трезвый :
5 лет, 11 месяцев, 12 дней


Ну вот сам сравни запрос из дампа с запросом в первом посте. У тебя же все поля перечислены, вплоть до `id`. А значит значение автоинкремента берется из таблицы firma.

Видимо в ней последний AI и равен 512.


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




maximka787
Навскидку ты REPEAR запускал для второй таблицы, или очищал ли зависимые таблицы через TRUNCATE ?


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 3 месяца, 27 дней
Карма: 1




inpost
не, у меня InnoDB. там такое не делается. Но я точно нажимал и оптимизацию и дефрагментацию и проверку. Видимо причина в том, что говорит twin

Тут я тоже согласен что из-за ID проблема. В другой таблице последний номер 350. Непонятно откуда взялась цифра 512 и причем она регулярно создается. На локалке импортировал БД и там все ровненько. Правда у меня на локалке и разрешается команда TRUNCATE, а на хостинге выдает блокировку. в общем, если разберусь в эти два дня, то сообщу, в чем была причина.


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
maximka787  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1228
Пользователь №: 2705
На форуме: 9 лет, 3 месяца, 27 дней
Карма: 1




Ну в общем я почитал в инете информацию "InnoDB AUTO_INCREMENT Lock Modes"
Вопрос кроется в особенности движка InnoDB, хотя в чем именно хз. Каким боком он формирует AI я так и не понял. У меня прибавляет рандомное (но постоянное) число к последнему id. решил добавить как есть и вручную уменьшить AI до следующего id. думаю ниче страшного не будет.

CREATE TABLE IF NOT EXISTS `firma` (
`id` int(10) unsigned NOT NULL,
`login` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `firma` (`id`, `login`) VALUES
(1, 'mail-1@mail.ru'),
...
(
100, 'mail-100@mail.ru');
/* total 100 rows */


CREATE TABLE IF NOT EXISTS `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


CREATE TABLE IF NOT EXISTS `users2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
/* test table MyISAM */


INSERT INTO `users` (`email`) SELECT `login` FROM `firma` ORDER BY `id`
/* AI = 150 */


INSERT INTO `users2` (`email`) SELECT `login` FROM `firma` ORDER BY `id`
/* AI = 101 - GOOD */


--------------------
..Работает - не трогай!
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса