0

创建数据库'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 databases;”检查学生数据库是否存在。但这条消息说“student.db”不存在。

4

5 回答 5

3

您似乎正在尝试通过直接修改系统表来授予权限。每个 MySQL 实例中都有一个表mysql.db,但该表不属于您的student数据库。

我建议您使用 GRANT 语句,而不是直接修改系统数据:

mysql> CREATE USER 'beginner'@'%' identified by 'enter password here';
mysql> GRANT ALL PRIVILEGES ON student.* to 'beginner';
于 2012-01-03T02:38:33.177 回答
0

student.db 指的是数据库中名为dbstudentTABLE 。您显然还没有创建此表...
顺便说一句,仔细阅读错误消息以及您认为问题所在。

于 2012-01-03T02:28:32.697 回答
0

这个说法

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

假设在某个时候,db已创建名为的表:

create table db ( ...

根据您在此处显示的内容,您似乎没有创建它;你期望它的定义来自哪里?

于 2012-01-03T02:28:38.367 回答
0

您已经创建了一个数据库,但还没有在其中创建任何表。您告诉 MySQL 将您的数据插入到一个不存在的表名“db”中。你需要有这样的东西:

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

数据库只是一个容器。它必须至少定义一个表才能真正有用。

于 2012-01-03T02:28:54.197 回答
0

问题是......你有一个带有“InnoDB ENGINE”的数据库......我的解决方案是......你必须有一个“MyISAM ENGINE”,如何改变?......在你的环境中找到可能是和

# find / -name my.cnf

在 LINUX 上,只需将以下行添加到

$ vim /etc/mysql/my.cnf 

default-storage-engine= MyISAM

然后重启mysql:

$ service mysql restart
于 2018-06-04T02:26:00.120 回答