"Error: ER_NO_SUCH_TABLE: Table 'managementapp.medicament' doesn't exist"



我正在使用react、node和express处理简单的CRUD应用程序。。所以我连接到我的mysql数据库";managementapp";我试图在数据库中插入信息,但我总是收到错误";当我在本地测试时,表不存在,它在mysql-wrokbensh和im中正常工作,所以我确保我正确拼写了表的名称。因此,这是App.js的react代码:

function App() {
const [name,setName]=useState("");
const [description,setDescription]=useState("");
const [number,setNumbre]=useState(0);
const addMedicament = () => {
console.log(name);
Axios.post("http://localhost:3001/create",
{name:name,
description:description,
number:number,
}).then(()=>{
console.log("succes");
});
};

这是我的后端部分的index.js

const db=mysql.createConnection({
user:"root",
host:"localhost",
password:"",
database:"managementapp",

});

app.post("/create", (req, res) => {
console.log(req.body);
const name=req.body.name;
const description=req.body.description;
const number=req.body.number;
db.query(
"insert into medicament (name,description,number) VALUES (?,?,?);",
[name,description,number],
(err,result) =>{
if (err) 
{ console.log(err); 
}
else { res.send("Values inserted !! "); 
}
}
);
});

所以我总是收到这个错误

{ name: 'erty', description: 'rtyuk', number: '86' }
Error: ER_NO_SUCH_TABLE: Table 'managementapp.medicament' doesn't exist
at Query.Sequence._packetToError (C:UsersChahineManagementservernode_modulesmysqllibprotocolsequencesSequence.js:47:14)   
at Query.ErrorPacket (C:UsersChahineManagementservernode_modulesmysqllibprotocolsequencesQuery.js:79:18)
at Protocol._parsePacket (C:UsersChahineManagementservernode_modulesmysqllibprotocolProtocol.js:291:23)
at Parser._parsePacket (C:UsersChahineManagementservernode_modulesmysqllibprotocolParser.js:433:10)
at Parser.write (C:UsersChahineManagementservernode_modulesmysqllibprotocolParser.js:43:10)
at Protocol.write (C:UsersChahineManagementservernode_modulesmysqllibprotocolProtocol.js:38:16)
at Socket.<anonymous> (C:UsersChahineManagementservernode_modulesmysqllibConnection.js:88:28)
at Socket.<anonymous> (C:UsersChahineManagementservernode_modulesmysqllibConnection.js:526:10)
at Socket.emit (events.js:400:28)
at addChunk (internal/streams/readable.js:290:12)
--------------------
at Protocol._enqueue (C:UsersChahineManagementservernode_modulesmysqllibprotocolProtocol.js:144:48)
at Connection.query (C:UsersChahineManagementservernode_modulesmysqllibConnection.js:198:25)
at C:UsersChahineManagementserverindex.js:25:8
at Layer.handle [as handle_request] (C:UsersChahineManagementservernode_modulesexpresslibrouterlayer.js:95:5)
at next (C:UsersChahineManagementservernode_modulesexpresslibrouterroute.js:137:13)
at Route.dispatch (C:UsersChahineManagementservernode_modulesexpresslibrouterroute.js:112:3)
at Layer.handle [as handle_request] (C:UsersChahineManagementservernode_modulesexpresslibrouterlayer.js:95:5)
at C:UsersChahineManagementservernode_modulesexpresslibrouterindex.js:281:22
at Function.process_params (C:UsersChahineManagementservernode_modulesexpresslibrouterindex.js:341:12)
at next (C:UsersChahineManagementservernode_modulesexpresslibrouterindex.js:275:10) 
{
code: 'ER_NO_SUCH_TABLE',
errno: 1146,
sqlMessage: "Table 'managementapp.medicament' doesn't exist",
sqlState: '42S02',
index: 0,
sql: "insert into medicament (name,description,number) VALUES ('erty','rtyuk','86');"
}

我从昨晚开始搜索,发现问题出在我的mysql安装上。。所以我卸载了它并重新安装,然后我将端口从3306更改为其他端口,因为它已经在使用中了。。然后我有关于的错误

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol 
requested by server; consider upgrading MySQL client

所以我只进入mysql,运行一个查询,说root用户可以使用旧的mysqlnative_password方法进行身份验证:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourRootPassword';

一切都很顺利。感谢艾丁的解释。

最新更新