#mysql #node.js #base64
Вопрос:
Я продолжаю получать это как ошибку
D:node_appsfinanceplusgt;node financeplus.js App running on Port: 7000 D:node_appsfinanceplusnode_modulesmysqllibprotocolParser.js:437 throw err; // Rethrow non-MySQL errors ^ Error: ER_BAD_FIELD_ERROR: Unknown column 'base64str' in 'field list' at Query.Sequence._packetToError (D:node_appsfinanceplusnode_modulesmysqllibprotocolsequencesSequence.js:47:14) at Query.ErrorPacket (D:node_appsfinanceplusnode_modulesmysqllibprotocolsequencesQuery.js:79:18) at Protocol._parsePacket (D:node_appsfinanceplusnode_modulesmysqllibprotocolProtocol.js:291:23) at Parser._parsePacket (D:node_appsfinanceplusnode_modulesmysqllibprotocolParser.js:433:10) at Parser.write (D:node_appsfinanceplusnode_modulesmysqllibprotocolParser.js:43:10) at Protocol.write (D:node_appsfinanceplusnode_modulesmysqllibprotocolProtocol.js:38:16) at Socket.lt;anonymousgt; (D:node_appsfinanceplusnode_modulesmysqllibConnection.js:88:28) at Socket.lt;anonymousgt; (D:node_appsfinanceplusnode_modulesmysqllibConnection.js:526:10) at Socket.emit (events.js:400:28) at addChunk (internal/streams/readable.js:290:12) -------------------- at Pool.query (D:node_appsfinanceplusnode_modulesmysqllibPool.js:199:23) at D:node_appsfinanceplusfinanceplus.js:77:8 at Layer.handle [as handle_request] (D:node_appsfinanceplusnode_modulesexpresslibrouterlayer.js:95:5) at next (D:node_appsfinanceplusnode_modulesexpresslibrouterroute.js:137:13) at Route.dispatch (D:node_appsfinanceplusnode_modulesexpresslibrouterroute.js:112:3) at Layer.handle [as handle_request] (D:node_appsfinanceplusnode_modulesexpresslibrouterlayer.js:95:5) at D:node_appsfinanceplusnode_modulesexpresslibrouterindex.js:281:22 at Function.process_params (D:node_appsfinanceplusnode_modulesexpresslibrouterindex.js:335:12) at next (D:node_appsfinanceplusnode_modulesexpresslibrouterindex.js:275:10) at urlencodedParser (D:node_appsfinanceplusnode_modulesbody-parserlibtypesurlencoded.js:82:7) { code: 'ER_BAD_FIELD_ERROR', errno: 1054, sqlMessage: "Unknown column 'base64str' in 'field list'", sqlState: '42S22', index: 0, sql: "INSERT INTO financeplusacct (fullname, address, city,state, tel,email,nationalID,gender,birth_date, bal, ccy, accNum, base64str) VALUES ('Allen Hommer','102 Whitewater Road','Smithfield','North Carolina','(919)800-3322','a.hommer@aol.com','A89360','Male','2021-11-03','2500','USD','00343515949','data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD.........')" } D:node_appsfinanceplusgt;
Информация не сохраняется в базе данных Mysql. Я создал таблицы для размещения base64str, И просто добавив их, я получаю эту ошибку
код для вставки в базу данных
app.post('/api/createaccount',function(req,res){ var prologue = '00343'; var digits = Math.floor(Math.random() * 900000) 100000; var accNum = prologue digits; var fullname = req.body.fullname; var address = req.body.address; var city = req.body.city; var state = req.body.state; var tel = req.body.tel; var email = req.body.email; var nationalID = req.body.nationalID; var gender = req.body.gender; var birth_date = req.body.birth_date; var bal = req.body.bal; var ccy = req.body.ccy; var base64str = req.body.base64str; dbConn.query('INSERT INTO financeplusacct (fullname, address, city,state, tel,email,nationalID,gender,birth_date, bal, ccy, accNum, base64str) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)',[fullname, address, city,state, tel,email,nationalID,gender,birth_date, bal, ccy, accNum, base64str], function (error, results, fields){ if (error) throw error; return res.send({error: false,data: results, message: 'Account setup Complete'}) }); });
Теперь вызываем REST api из интерфейса React JS следующим образом
function createCustomerAcc(){ let base64str = localStorage.getItem('postImage'); let item = {fullname, address, city, state, tel, email, nationalID, gender, birth_date, bal,ccy, base64str}; fetch('http://localhost:7000/api/createaccount',{ method : 'POST', mode : 'cors', headers:{ 'Accept': 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(item) }).then((response) =gt; response.json()) .then((responseJson) =gt;{ if(responseJson.message =='Account setup Complete'){ alert('Account Setup Complete'); }else{ alert(responseJson.message); } }).catch((error)=gt;{ console.error(error); }) }
Выдает мне эту ошибку в консоли. Почему это так? Пожалуйста, что я должен сделать в этом случае? Он выдает ошибку MySQL, и я не вижу, откуда берется проблема, так как даже столбец существует в базе данных. И самое забавное, что Колонка существует во всех областях. Пожалуйста, что я не так понимаю?
Правки
Таблица СОЗДАНИЯ представлена в виде
CREATE TABLE `financeplusacct` ( `id` int(11) NOT NULL, `fullname` varchar(150) NOT NULL, `address` varchar(300) NOT NULL, `city` varchar(150) NOT NULL, `state` varchar(150) NOT NULL, `tel` varchar(150) NOT NULL, `email` varchar(150) NOT NULL, `nationalID` varchar(150) NOT NULL, `gender` varchar(150) NOT NULL, `birth_date` varchar(150) NOT NULL, `ccy` varchar(150) NOT NULL, `bal` decimal(18,2) NOT NULL, `accNum` varchar(150) NOT NULL, `base64str` text NOT NULL, `created_at` timestamp NOT NULL DEFAULT current_timestamp(), `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Комментарии:
1. Показать выходные данные
SHOW CREATE TABLE financeplusacct;
2. @Barmar пожалуйста, смотрите Правки
3. «Неизвестная колонка…» не может быть яснее. Пожалуйста, убедитесь, что вы просматриваете правильную таблицу в правильной базе данных. И посмотрите, действительно ли это поле существует или нет.