Импорт в базу

Главные вкладки

Аватар пользователя lexanic77 lexanic77 20 июня 2007 в 12:57

Написал я скрипт по загрузке данных в базу сайта.
Всё отлично загрузилось, в нужных категориях появилось всё как я и хотел.
Ошибка возникает когда я пытаюсь создать новый документ с помощью сайта.
Он обнаруживате что nid с таким номером есть и затирет его.
Вопрос откуда берется номер последней страницы?
HELP

Комментарии

Аватар пользователя Ainur Ainur 20 июня 2007 в 15:21

Drupal 4.7

/**
* Save a node object into the database.
*/
function node_save(&$node) {
global $user;

$node->is_new = false;

// Apply filters to some default node fields:
if (empty($node->nid)) {
// Insert a new node.
$node->is_new = true;

$node->nid = db_next_id('{node}_nid');
$node->vid = db_next_id('{node_revisions}_vid');;
}
else {
// We need to ensure that all node fields are filled.
...

Мануал: db_next_id($name)

Аватар пользователя andyceo andyceo 20 июня 2007 в 15:42

берет, по-видимому, из таблицы sequences. сам когда делал мультисайтинг, замучился немного (возможно скоро напишу об этом статью)

Аватар пользователя Ainur Ainur 20 июня 2007 в 16:07

/**
* Return a new unique ID in the given sequence.
*
* For compatibility reasons, Drupal does not use auto-numbered fields in its
* database tables. Instead, this function is used to return a new unique ID
* of the type requested. If necessary, a new sequence with the given name
* will be created.
*/
function db_next_id($name) {
$name = db_prefix_tables($name);
db_query('LOCK TABLES {sequences} WRITE');
$id = db_result(db_query("SELECT id FROM {sequences} WHERE name = '%s'", $name)) + 1;
db_query("REPLACE INTO {sequences} VALUES ('%s', %d)", $name, $id);
db_query('UNLOCK TABLES');

return $id;
}

Попробуйте изменить поле node_nid в таблице sequinces на нужное вам.