Почему отображается ОШИБКА 1146 "Таблица" student.db "не существует", хотя я уже создаю базу данных "student"? - PullRequest
0 голосов
/ 03 января 2012

После того, как я создал базу данных 'student', когда я установил права доступа к БД, произошла ошибка с сообщением "ОШИБКА 1146 (42S02): Таблица" student.db "не существует. Я не могу понять, почему такого родапроизошла ошибка, хотя я наверняка создал базу данных.

Не могли бы вы сообщить мне, в чем проблема?

Пожалуйста, обратитесь к шагу ниже для воспроизведения.

Start mysql with root account
create database student;
use student;

insert into db values ('%', 'student', 'beginner', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y'); 

Ошибкапроизошла ...... "ОШИБКА 1146 (42S02): Таблица 'student.db' не существует.

Я могу проверить, что база данных студентов существует, используя 'show database;'.но это сообщение говорит, что "student.db" не существует.

Ответы [ 5 ]

3 голосов
/ 03 января 2012

Похоже, что вы пытаетесь предоставить привилегии путем непосредственного изменения системных таблиц.В каждом экземпляре MySQL есть таблица mysql.db, но эта таблица не принадлежит вашей базе данных student.

Я рекомендую использовать инструкцию GRANT вместо непосредственного использования системных данных:

mysql> CREATE USER 'beginner'@'%' identified by 'enter password here';
mysql> GRANT ALL PRIVILEGES ON student.* to 'beginner';
0 голосов
/ 04 июня 2018

Проблема была ... У вас есть БД с "InnoDB ENGINE" ....... Мое решение было ... У вас должен быть «ДВИГАТЕЛЬ MyISAM», как поменять? ... найти в вашей среде можно с

# find / -name my.cnf

в LINUX, просто добавьте следующую строку в

$ vim /etc/mysql/my.cnf 

default-storage-engine= MyISAM

Затем перезапустите mysql:

$ service mysql restart
0 голосов
/ 03 января 2012

Это утверждение

insert into db values ('%', 'student', 'beginner', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y', 'y');

предполагает, что в какой-то момент была создана таблица с именем db:

create table db ( ...

На основании того, что вы здесь показали, вы некажется, не создал это;откуда вы ожидали его определения?

0 голосов
/ 03 января 2012

Вы создали базу данных, но не создали в ней никаких таблиц.Вы говорите MySQL вставить ваши данные в таблицу с именем "db", которой не существует.У вас должно быть что-то вроде этого:

create database student;
use student;
create table db (.... field definitions here ...)  <---you're missing this step
insert into db values (....);

База данных - это просто контейнер.В нем должна быть определена как минимум ОДНА таблица, чтобы быть полезной.

0 голосов
/ 03 января 2012

student.db относится к ТАБЛИЦЕ с именем db внутри базы данных student. Вы, очевидно, еще не создали эту таблицу ...
b.t.w. Внимательно прочитайте сообщение об ошибке и о чем вы думаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...