在mysql中插入命令被拒绝

sou*_*ode 19 php mysql

我有一个数据库表,当我用用户名和密码选择数据时,它可以正常工作,但当我在该表中插入一些具有相同用户名和密码的数据时,它会显示错误

INSERT command denied to user 'username'@'localhost' for table 'tablename'
Run Code Online (Sandbox Code Playgroud)

我使用Google进行搜索,其他人也遇到了与db size相同的问题.我检查了我的数据库,当我直接去phpmyadmin将数据插入表中时,它可以工作,但是当我从PHP脚本调用表的查询时,它给了我错误.

Raf*_*ari 24

将我的网站从一个主机帐户移动到另一个主机帐户后我遇到了类似的问题 该问题是由INSERT引用旧数据库的SQL查询()引起的.用新的数据库名称替换旧的数据库(或者只是删除数据库名称)解决了这个问题.但是这个错误让我托管公司的支持者难堪.

例:

INSERT INTO old_db_name.table_name ( ) VALUES ();
Run Code Online (Sandbox Code Playgroud)

变成:

INSERT INTO new_db_name.table_name ( ) VALUES ( );
Run Code Online (Sandbox Code Playgroud)

希望这有帮助并且有意义.

  • 您不会相信这很容易搞砸,特别是如果您的托管公司坚持为表添加前缀! (2认同)

Zac*_*ner 16

这是权限问题.使用应用程序运行的用户登录MySQL提示符,然后输入以下查询:

SHOW GRANTS;
Run Code Online (Sandbox Code Playgroud)

这将显示当前用户拥有的权限(MySQL发言中授予的权限).我的猜测是你不会看到给定表的INSERT权限.您将需要root用户通过运行此查询来授予您权限:

GRANT INSERT ON 'db'.'tablename' TO 'username'@'localhost'
Run Code Online (Sandbox Code Playgroud)


ozg*_*zer 9

检查您的 SQL 代码。

如果有,只需删除 dbName。

例子:

insert into `dbName`.`tableName` ( columns ) values ( values );
Run Code Online (Sandbox Code Playgroud)

改成:

insert into `tableName` ( columns ) values ( values );
Run Code Online (Sandbox Code Playgroud)