Показаны сообщения с ярлыком Navicat. Показать все сообщения
Показаны сообщения с ярлыком Navicat. Показать все сообщения

понедельник, 8 августа 2011 г.

MySQL: #42000 Can't find any matching row in the user table

Инструментарий: MySQL, Toad for MySQL
Описание: При изменение привилегий пользователю в MySQL выскакивает сообщение:
 #42000 Can't find any matching row in the user table
Решение: Оказывается начиная с версии MySQL 5.0.2 пользователь без пароль автоматически не создаются. Изменить данную опцию можно несколькими способами:

  1. Изменить в файле my.ini настройки, но не всегда есть возможность настраивать сервер или изменять файлу my.ini 
  2. Добавить к запросу IDENTIFIED BY "пароль"
Автор:

пятница, 5 августа 2011 г.

MySQL: Вызов хранимых функций (Unknown column 'xxx' in 'field list')

Инструментарий: MySQL;  TOAD for MySQL 5.0 и Navicat
В общем хранимые процедуры и функции это большой раздел в котором очень много нюансов как при работе, так и при написании. Я написал некую функцию которая возвращала текущего пользователя, но это не столь важно, суть в том что функцию нужно вызвать. Синтаксис вызова функции следующий:
 SELECT <Название функции>
Конечно же написал в соответствии с синтаксисом свой запрос на вызов функции:
SELECT    GetUserID;  
 В результате выполнения получил сообщение об ошибке:
Результат выполнения Navicat:
  • [SQL] select GetUserID;

[Err] 1054 - Unknown column 'GetUserID' in 'field list'

  • Результат выполнения  TOAD for MySQL
MySQL Database Error: Unknown column 'GetUserID' in 'field list' 1 0

Инструментарий разный, но суть та же, не найдена колонка.
Решение:Оказывается для решения проблемы нужно добавить скобки. В результате наш запрос примет следующий вид:
SELECT    GetUserID();  

 P.S. Казалось что такого, но без скобок название видимо рассматривается как некое поле. В моем случае были опущены скобки, поскольку функция не принимала входных параметров.

Автор:

MySQL: При выполнении ALTER TABLE ошибка [Err] 1005 Can't create table...(errno: 121)

Инструментарий: MySQL, Navicat
Описание: Есть две таблицы tbl_category и tbl_user, которые нужно связать по полях  tbl_category.user_id и  tbl_user.id. Для этого выполняем запрос:
ALTER TABLE tbl_category ADD CONSTRAINT fk_category_user FOREIGN KEY (user_id) REFERENCES tbl_user (id) ON DELETE RESTRICT ON UPDATE RESTRICT;
Результат: При выполнении запроса в Navicat получаем сообщение об ошибке:
[Err] 1005 - Can't create table 'ibox.#sql-17d8_1' (errno: 121)

Решение: Сравнил поля двух таблиц, в обоих таблицах поля int(11), но все дело в значении поля -  unsigned. В таблице  tbl_user.id (unsigned), а  tbl_category.user_id  unsigned не установлено. После установки полю tbl_category.user_id - unsigned все заработало.

Автор: