Вставить команду в mysql
У меня есть таблица базы данных, из которой, когда я выбираю данные с именем пользователя и паролем, он работает, но когда я вставляю некоторые данные в эту таблицу с одинаковым именем пользователя и паролем, это показывает мне ошибку
INSERT command denied to user 'username'@'localhost' for table 'tablename'
Я искал с помощью Google, а у кого-то была такая же проблема с размером db. Я проверил свой db, и когда я перехожу непосредственно к phpmyadmin для вставки данных в таблицу, он работает, но когда я вызываю запрос в таблицу из PHP script, он дает мне ошибку.
Ответы
Ответ 1
Это проблема с разрешениями. Войдите в приглашение MySQL с пользователем, которым работает приложение, и введите этот запрос:
SHOW GRANTS;
Это покажет вам привилегии (grants в MySQL-talk), которые имеет текущий пользователь. Я предполагаю, что вы не увидите привилегии INSERT для данной таблицы. Вам понадобится root-пользователь, чтобы предоставить вам разрешение, выполнив этот запрос:
GRANT INSERT ON 'db'.'tablename' TO 'username'@'localhost'
Ответ 2
У меня была аналогичная проблема после переноса моего сайта с одной учетной записи хостинга на другую. Проблема была вызвана SQL-запросом (INSERT
), который ссылался на старую базу данных. заменив старый db новым именем db (или просто удалив имя db в целом), решила проблему. Но эта ошибка заставила людей поддержать мою хостинговую компанию.
Пример:
INSERT INTO old_db_name.table_name ( ) VALUES ();
Изменено на:
INSERT INTO new_db_name.table_name ( ) VALUES ( );
Надеюсь, это поможет и имеет смысл.
Ответ 3
Проверьте код SQL.
И просто удалите dbName, если у вас есть.
Пример:
insert into `dbName`.`tableName` ( columns ) values ( values );
Изменить на:
insert into `tableName` ( columns ) values ( values );
Ответ 4
Это также случилось со мной, и проблема в том, что когда вы вызываете команду INSERT
в вашем php файле, вы должны указать другую базу данных.
Короче, найдите, где находится ваша команда INSERT, и проверьте часть your_database_name
ниже
"INSERT INTO \`your_database_name\`.\`your_table_name\`
Это может решить вашу проблему. Конечно, если вам предоставлены все привилегии.
Ответ 5
В вашем запросе вы можете использовать имя таблицы с именем базы данных "INSERT INTO DB_NAME.table_name...", где у пользователя базы данных нет разрешений на вставку для DB_NAME. Таким образом, эта ошибка возникает, потому что запрос указывает на таблицу другой базы данных.
Вам нужно удалить имя базы данных или использовать правильное имя базы данных.
Ответ 6
У меня была такая же проблема.
Наш хостинг-провайдер mysql удалил разрешение на вставку, когда достигнут объем max db.
Используя
SHOW GRANTS;
Команда (упомянутая в ответе выше) в mysql помогла мне понять это.
Мы использовали JAWS DB MYSQL, но другие размещенные провайдеры mysql могут использовать тот же метод.
Ответ 7
Убедитесь, что у вас есть открытое соединение с базой данных.
Если у вас есть отдельные функции для подключения к базе данных и для значений вставки проверьте подключение к базе данных открыто или нет.