[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Из одной таблицы в соседнею
Страницы: 1, 2
Tapak
    $r = mysql_query("SELECT * FROM `user`") or die(mysql_error());
while ($ra = mysql_fetch_assoc($r))
{
$ri = mysql_query("INSERT INTO `item` (name) VALUES ('".$ra['product_name']."')") or die(mysql_error());
}
eval($ri);

Ошибка такого рода -
Duplicate entry '' for key 'ALIAS_INDEX'
Правильно, ли я вообще делаю эту процедуру?
Placido
На каком-то поле стоит уникальный индекс и значение по умолчанию '' (UNIQUE KEY DEFAULT ''). Нужно видеть "CREATE TABLE ..." таблицы. А вообще, зачем такие пляски с бубном?
INSERT INTO `item` (name) SELECT `product_name` FROM `user`;
Tapak
Placido
 А вообще, зачем такие пляски с бубном?

Какие есть еще варианты?? Если миграция с одного компонента на другой, а там +100500 товаров?
Tapak
Чего mysql ругается? Я вставляю только name, пусть сам себе id дописывает..
Tapak
CREATE TABLE IF NOT EXISTS `item` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`application_id` int(11) NOT NULL,
`type` varchar(255) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`alias` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`modified_by` int(11) NOT NULL,
`publish_up` datetime NOT NULL,
`publish_down` datetime NOT NULL,
`priority` int(11) NOT NULL,
`hits` int(11) NOT NULL,
`state` tinyint(3) NOT NULL,
`access` int(11) NOT NULL,
`created_by` int(11) NOT NULL,
`created_by_alias` varchar(255) NOT NULL,
`searchable` int(11) NOT NULL,
`elements` longtext NOT NULL,
`params` longtext NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ALIAS_INDEX` (`alias`),
UNIQUE KEY `name_2` (`name`),
KEY `PUBLISH_INDEX` (`publish_up`,`publish_down`),
KEY `STATE_INDEX` (`state`),
KEY `ACCESS_INDEX` (`access`),
KEY `CREATED_BY_INDEX` (`created_by`),
KEY `NAME_INDEX` (`name`),
KEY `APPLICATIONID_INDEX` (`application_id`),
KEY `TYPE_INDEX` (`type`),
KEY `MULTI_INDEX` (`application_id`,`access`,`state`,`publish_up`,`publish_down`),
KEY `MULTI_INDEX2` (`id`,`access`,`state`,`publish_up`,`publish_down`),
KEY `ID_APPLICATION_INDEX` (`id`,`application_id`),
FULLTEXT KEY `SEARCH_FULLTEXT` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;

Таблица в которую надо скопировать.
Как я понимаю мне необходимо использовать ON DUPLICATE KEY UPDATE имя_столбца=выражение.
Мне бы просто игнорировать все и всех.
Tapak
Хелп, пжл.
Делаю так -
INSERT IGNORE INTO `jos_zoo_item` (name) SELECT `product_name` FROM `jos_vm_product`. Вставляется только одна запись.
Placido
Игнорировать вся и всех не получится, так как все поля, кроме name, - NOT NULL. Поэтому туда нужно что-то писать при вставке данных. А вот что туда писать - решать вам. Второй вариант - изменить все поля c "NOT NULL" на "DEFAULT NULL" и удалить уникальный ключ с поля `alias`.
Tapak
INSERT INTO `item` (name) VALUES ('sd') SELECT `product_name` FROM `product`

Не прошло. Как правильно?
Не хочется удалять уникальный ключ, но все таки?
ALTER TABLE `item` DROP INDEX PRIMARY KEY `name`

Или можно всем полям добавить значение NULL и все будет ок?
Tapak
Сделал все поля кроме name NULL
Следующая ошибка, но уже скопировало около 50 значений.
Duplicate entry 'Bondage cuffs' for key 'name_2'
ALTER TABLE ITEM DROP PRIMARY KEY

Не помогло.
Placido
Я уже писал:
INSERT INTO `item` (name) SELECT `product_name` FROM `user`;

Если устраивает, нужно изменить все поля c "NOT NULL" на "DEFAULT NULL" (удалять уникальный индекс не обязательно, если я не ошибаюсь):
ALTER TABLE `item` 
MODIFY `application_id` INT(11) DEFAULT NULL,
MODIFY `type` VARCHAR(255) DEFAULT NULL,
...

и т.д. для остальных полей


Bondage cuffs? Это просто MySQL застеснялась )))))
Tapak
Внизу появилось предупреждение
Индексы name_2 и NAME_INDEX равнозначны и один из них может быть удалён.
Для чего вообще
UNIQUE KEY `name_2` (`name`),
KEY `NAME_INDEX` (`name`),

Поставил DEFAULT NULL до
`params` longtext DEFAULT NULL,

Все равно ошибка :D
Duplicate entry 'Bondage cuffs' for key 'name_2'
Placido
Duplicate entry 'Bondage cuffs' for key 'name_2' - значит, что в таблице `item` уже есть 'наручники для интимных игр'. В этом случае спасет "IGNORE":
INSERT IGNORE INTO `item` (name) SELECT `product_name` FROM `user`;
Tapak
Наверное все) Ща буду просматривать)
Вставлено строк: 4264.
Идентификатор вставленной строки: 4635 ( запрос занял 0.9189 сек. )
Спасибо.
Tapak
Еще вопросик, экранирует кавычки -
Вариант до: Костюм "Медсестра - sexy" Вариант после: Костюм \"Медсестра - sexy\"
Как избавиться?
Valick
Цитата
Костюм "Медсестра - sexy

у тебя РПГ ?


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.