id аккаунта инкрементируется при добавлении
т.е. если после создания форума написать скрипт импорта данных с другой базы, то id более старых(импортируемых) акков окажется больше
нельзя записать в базу 2 одинаковых id - это уникальные ключи
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от ConfL1kT:
id аккаунта инкрементируется при добавлении
т.е. если после создания форума написать скрипт импорта данных с другой базы, то id более старых(импортируемых) акков окажется больше
инкрементация в SQL языке происходит автоматически только если поле id пусто, когда происходит импорт, id в запросе указывается, если такого айди нету в базе, то можно указывать свою цифру, алсо можно форсировать айдишник 1, 2 и етц. Почему при переносе базы с одного движка на другой id переносятся старые? Банально потому что капитан сообщает, что проще скопировать айдишник чем проследить зависимости старого айдишника и переправить их на новый айдишник пользователя ( топик стартер, посты етц. )
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от nanozavr:
инкрементация в SQL языке происходит автоматически только если поле id пусто, когда происходит импорт, id в запросе указывается, если такого айди нету в базе, то можно указывать свою цифру, алсо можно форсировать айдишник 1, 2 и етц. Почему при переносе базы с одного движка на другой id переносятся старые? Банально потому что капитан сообщает, что проще скопировать айдишник чем проследить зависимости старого айдишника и переправить их на новый айдишник пользователя ( топик стартер, посты етц. )
//akki
$old_users;
$users=mysql_fetch_array(mysql_query(select * from users));
foreach($users as $user){
mysql_query(insert into users (login, pass, email) values ($user[login],$user[pass],$user[email]));
$old_users[$user[id]]=mysql_insert_id();
}
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от ConfL1kT:
хуле следить
Хорошо, зписывать айдишник в переменную не трудно, но зачем нужны эти лишние движения, которые в результате выйдут в лишние запросы к базе при импорте?
П.С. не доебываюсь, просто базе поебать с каким айдишником запись с 1 или 1000, куда важнее наличие "мертвичины", по причине которой с гохи и выпиливаются неактивные.
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от nanozavr:
Хорошо, зписывать айдишник в переменную не трудно, но зачем нужны эти лишние движения, которые в результате выйдут в лишние запросы к базе при импорте?
где лишние запросы?
взяли всё, дальше 1 запись = 1 запрос + mysql_insert_id() - не знаю делает ли оно запрос или получается автоматически
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от ConfL1kT:
где лишние запросы?
Для того, что бы заменить старый ID в таблицах постов и топиков, необходимо сделать запрос
SELECT * FROM posts WHERE ID = old_id
и соответственно заменить old_id, на new_id похожим запросом INSERT, естественно вопрос милисекунд, но подобную операцию надо делать для каждого пользователя, что в результате займет в разы больше времени, чем простой импорт данных пользователя, постов и топиков. Хотя все это не принципиально и исключительно зависит от отношения человека к разбросу между некоторыми айдишниками, но такая база как форум обречена на то, что рано или поздно будет очищаться и гнаться за последовательностью нету необходимости.
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от nanozavr:
Для того, что бы заменить старый ID в таблицах постов и топиков, необходимо сделать запрос
SELECT * FROM posts WHERE ID = old_id
и соответственно заменить old_id, на new_id похожим запросом INSERT, естественно вопрос милисекунд, но подобную операцию надо делать для каждого пользователя, что в результате займет в разы больше времени, чем простой импорт данных пользователя, постов и топиков. Хотя все это не принципиально и исключительно зависит от отношения человека к разбросу между некоторыми айдишниками, но такая база как форум обречена на то, что рано или поздно будет очищаться и гнаться за последовательностью нету необходимости.
зачем?
например:
у нас есть дерево переходов ид пользователей $old_users
взяли все темы в $tema
$tema[author_id]=$old_users[$tema[author[id]]];
$tema[author_id] - тут теперь ид с нового форума
insert into `tema` (title,author_id) values($tema[title],$tema[author_id]);
это не лишний запрос, это несколько операций на процессоре=)
для постов уже будет 2 замены значения переменых, ид пользователя и ид темы=)
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от ConfL1kT:
зачем?
например:
у нас есть дерево переходов ид пользователей $old_users
взяли все темы в $tema
$tema[author_id]=$old_users[$tema[author[id]]];
$tema[author_id] - тут теперь ид с нового форума
insert into `tema` (title,author_id) values($tema[title],$tema[author_id]);
это не лишний запрос, это несколько операций на процессоре=)
для постов уже будет 2 замены значения переменых, ид пользователя и ид темы=)
ну собственно да, мы пишем в массив нового форума данные из массива старого форума, в частности айдишник пользователя, о чем я в принципе и толкую, что нет смысла пытаться сделать переинкрементацию всего заново, вот.
П.С. все же фреймворки зло, пришлось вспоминать как раньше в пхп строились запросы.
Re: 12.11.12 fail again/failerki ne taschat/2nd fr by t
Сообщение от nanozavr:
ну собственно да, мы пишем в массив нового форума данные из массива старого форума, в частности айдишник пользователя, о чем я в принципе и толкую, что нет смысла пытаться сделать переинкрементацию всего заново, вот.
П.С. все же фреймворки зло, пришлось вспоминать как раньше в пхп строились запросы.
на Active Record - имхо, это не слишком сложней и код красивей будет=)