Коды ошибок Mysql
Список кодов ошибок Mysql
Список кодов ошибок Mysql
Столкнулся с тем, что иногда гораздно удобнее и правильнее спрятать логику работы базы в хранимые процедуры.
1. Вызов процедуры, которая возвращает результат:
CREATE PROCEDURE returnresult(IN userid INT)
BEGIN
SELECT * from ... ;
END;
Тогда
<?php mysql_query('call returnresult(2)');'?>
выдаст ошибку “PROCEDURE base.returnresult can’t return a result set in the given context “.
Проблема в том, что библиотека mysql не поддерживает мульти-запросы. Для возврата результата из хранимой процедуры следует использовать улучшенную версию - библиотеку mysqli (improved).
Заменим в коде функции mysql на mysqli, (на локальном сервере для windows - добавим в файл php.ini строку: extension=php_mysqli.dll; аналогичной команды для *nix не знаю.). После этого все заработало.
2. Рекурсивные процедуры в mysql
При попытке использовать рекурсию mysql выдал:
Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routineset …
Лечится запросом “SET max_sp_recursion_depth= 4″ // глубину рекурсии - в зависимости от задачи. Мне много не надо было. ![]()
Показать все базы данных Mysql
SHOW DATABASES;
Создать базу данных MySQL
create database db1;
Создать пользователя mysql с правами на эту базу данных
GRANT ALL PRIVILEGES ON db1.* to user1@localhost identified by 'pass1';
shell> mysql --user=root mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO superuser@localhost
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO superuser"%"
-> IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
superuser - Полноценный суперпользователь - он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для superuser@localhost, так и для superuser@”%”. Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.
admin - Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).
dummy - Пользователь, который может подсоединяться к серверу без пароля, но только с локального компьютера. Все глобальные привилегии установлены в значение ‘N’-тип привилегии USAGE, который позволяет создавать пользователей без привилегий. Предполагается, что относящиеся к базам данных привилегии будут назначены позже.
Практически каждому программисту приходится сталкиваться с древовидной структурой.
Дано: php + mysql.
Все элементы, которые входят в древовидную структуру хранятся в одной таблице базы данных.
Найти: способ хранения и представления древовидной структуры.
while($row = mysql_fetch_assoc($res)){
$tree[$row['pid']][$row['id']] = $row;
}
Плюсы: простота организации данных.