при восстановлении из backup иногда не сохраняется атрибут auto_increment у полей и нужно вручную через phpmyadmin его восстановить.
ппц, при чём тут префиксы таблиц?? Таблица уже существует. Если ыт поверх ставишь то это зря, полностью очисти базу от всех таблиц а уж потом ставь бекап) ну это какбэ из-за авто_инкремента. Нужно снимать галочку Авто_инкремента при дампе, чтобы не гемороиться....а вносить comment_ID лучше NULL, хотя не принципиально. По идее в твоём случае нужно дописать в конец запроса (создания таблицы) AUTO_INCREMENT=2. Может я уже чё-то не то говорю, 3 часа ночи)) Поправьте если чё) Никогда такого не замечал честно говоря)
Жаль, что не имею возможности прикрепить картинку базы. Сейчас у меня общий вид старой и новой базы имеют вид: ourwater151 (18) ss_comments ss_links ss_options ss_postmeta ss_posts ss_terms ss_term_relationships ss_term_taxonomy ss_usermeta ss_users wp_links wp_options wp_postmeta wp_terms wp_term_relationships wp_term_taxonomy wp_usermeta wp_users Старая база- wp_ Новая- ss_ Я уже каким то чудесным образом перенёс данные старой базы wp_comments в ss_comments и wp_posts в ss_posts. Данные в новую базу перенеслись успешно. Делалось это не с помощью бэкапа, а при помощи колдовства с вкладкой "Операции". Подсказал один человек: сразу перенёс эти данные, а остальные решил перенести попожжа и после, как не пытался сделать то же самое, так и не получилось. Видно что-то подзабыл, хотя вроде многие варианты проверил на свой страх и риск. Сейчас я на блоге имею все свои посты и комменты. Их пока не много, но всё же. Вы советуете удалить нафиг эту старую базу wp_ и уже работать с новой ss_? Или Вы советуете оставить только базу ss_, очистить её и уже после делать бэкап? А сохраняться ли посты и комменты? Естесственно буду экспериментировать, так что советуйте. Но как же я перенёс данные без бэкапа? Если останется только одна база- то необходимо сразу же сделать бэкап: 1. Снять галочку "Добавить AUTO_INCREMENT" 2. Вы имеете ввиду строчку в дампе : "`comment_ID` bigint(20) unsigned NOT NULL auto_increment,"? Что в ней изменить? 3. Во всех строках типа: ") ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=38 "- изменять значения на 2? Это обязательно для создания файла бэкапа? 4. По совету, я при создании файла бэкапа ставил галочку в :"Добавить CREATE PROCEDURE / FUNCTION" и не ставил галку в :"Сохранить как файл". С Сохранять обязательно в UTF8? Очень много написал, может что не в тему, но так хочется разобраться, что бы в будущем не делать ошибок и не тормозить неделю- две с одним вопросом. Спасибо Всем помогающим!
как сделать поиск по бд не как where.../ я хочу чтобы проверялось если такое слово или нет.если есть то показать по бд а не таблица
Подскажите где можно выполнить данный запрос: Code: SET TERM ^; CREATE PROCEDURE DeleteEmp (pEmpID INTEGER) AS BEGIN DELETE FROM STAFF WHERE ID = :pEmpID; END^ Если InterBase тупит, просит лицензию. (Синтаксис InterBase). Что в MS Office Access что в Database Tour пишет: Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'. Хотя в Database Tour выставляю синтаксис InterBase 6.
Добрый День! Помогите пожалуйста с таким вопросом: Можно ли как нибудь оптимизировать/упростить этот запрос (возможно его стоит разбить на несколько запросов?), что бы увеличить скорость выполнения: Code: SELECT sid, s.catid, s.aid, s.title, s.time, s.hometext, s.bodytext, s.comments, s.counter, s.topic, s.acomm, s.score, s.ratings, c.title, t.topicid, t.topicname, t.topicimage, t.topictext, z.id, z.kwords, z.sslka, z.mname FROM prefix_table1 AS s LEFT JOIN prefix_table2 AS c on (s.catid=c.catid) LEFT JOIN prefix_table3 AS z on (sid=z.nid) LEFT JOIN prefix_table4 AS t on (s.topic=t.topicid) WHERE ihome='0' AND s.time <= NOW() AND status='1' AND (alanguage='russian' OR alanguage='') ORDER BY s.time DESC LIMIT 0, 10
Помогите правильно сформулировать запрос с двумя условиями where Code: select list from base_user WHERE LENGTH(`list`) = 20 это работает, если ввожу дополнительное условие, для значения строки с именем id1 с типом tinyint(4) и с возможными значениями 0/1, чтобы выводились только строки где id1=0 Code: select list from base_user WHERE LENGTH(`list`) = 20 WHERE (id1)=0 , то в ответ не получаю ничего. Как правильно?
Реконструирую БД. Необходимо найти решение следующей проблемы. БД полна информации, мне необходимо разбить одну таблицу на две, чтоб некоторые столбцы остались в одной другие в другой. Дело в том что таблица которую я хочу упростить содержит 70000 записей. как это можно сделать
Сделать дамп таблицы через phpmyadmin, создать новую таблицу с нужными условиями на основе дампа, сделать процедуру вставки в новую таблицу старых данных на основании новых условий, вставить данные, удалить старую таблицу, переименовать новую таблицу как старую, изменить те участки кода в двиге, где происходит обращение к полям из этой таблицы. Всё
ясен красен что так можно. Дампить не вариант, надо прям на сервере что-то сделать. А как? Писать скрипт которыйе будет селектить из старой и инсертить в новыю таблицу, но тогда сервак умерет от 70000 инсертов
А по другому никак. Чтобы не умер - делай паузу в 10 секунд например перед каждым апдейтом. Через денек всё и пропишется
На самом деле никаких сложных процедур и скриптов создавать не надо, решение довольно простое, используются лишь штатные средства MySQL. Итак, сперва получаем структуру исходной таблицы. Допустим, это таблица accounts: Code: mysql> SHOW CREATE TABLE accounts; CREATE TABLE `accounts` ( `account_id` bigint(255) default '0', `affiliate_id` bigint(255) default '0', `site_handle` varchar(255) default NULL, `default_address` varchar(255) default NULL, `email` varchar(255) default NULL, `firstname` varchar(255) default NULL, `password` varchar(255) default NULL, `send_announcements` int(2) default '0', `ip_address` varchar(255) default NULL, `is_active` int(2) default '0', `is_affiliate` int(2) default '0', `last_modified` varchar(255) default NULL, `last_loggedin` varchar(255) default NULL, `last_updated` varchar(255) default NULL, `time_created` varchar(255) default NULL, UNIQUE KEY `account_id` (`account_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Теперь создаем новую таблицу с измененной структурой на основе исходной таблицы: Code: mysql>CREATE TABLE `accounts2` ( `account_id` bigint(255) default '0', `is_active` int(2) default '0', `is_affiliate` int(2) default '0', `last_modified` varchar(255) default NULL, `last_loggedin` varchar(255) default NULL, `last_updated` varchar(255) default NULL, `time_created` varchar(255) default NULL, UNIQUE KEY `account_id` (`account_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Замечу, что у таблиц должен быть один общий столбец, иначе связь между ними нарушится, в данном случае это account_id. Теперь переносим данные из первой таблицы во вторую: Code: mysql> INSERT INTO accounts2 (account_id,is_active,is_affiliate,last_modified,la st_loggedin,last_updated,time_created) SELECT account_id,is_active,is_affiliate, last_modified,last_loggedin,last_updated,time_created FROM accounts LIMIT 5000 -> ; Query OK, 5000 rows affected (0.27 sec) Records: 5000 Duplicates: 0 Warnings: 0 Когда будешь разбивать таблицу, LIMIT нужно, конечно, убрать. Теперь осталось лишь удалить ненужные столбцы из первой таблицы: Code: ALTER TABLE `accounts` DROP COLUMN `affiliate_id`, DROP COLUMN `site_handle`, DROP COLUMN `default_address`; ...
Спасибо Всем, кто помогал советом в моём вопросе. С Вашей помощью и с помощью собственного мышления начал догонять по теме. Начал понимать суть базы данных, дампа данных. Уже поигрался с очисткой таблиц и вставкой данных из дампа. Всё- ок. Спасибо Всем.
Есть у ког-нить что-нить по mysql почитать с примерами? Пмеры выборок инсертов итп. Чтоб грамотоно бд использовать