Уважаемые, у меня есть этот маленький скрипт:
Это чтение информации о весе (pes в моем локальном) из шкалы от порта USB, которая мне нужна на mysql сервере
1-я часть работает хорошо, она дает мне вес в / tmp / ultimpes без осложнений, ну, мне нужно сделать несколько хаков для этого дерьма работает ... но работает.
#!/bin/bash
source /home/bin/claus.sh #contain variables $mysqluser mypass master(mysql host) idbascula (scale id)
screen -S pesa -X quit >> /dev/null
screen -S pesa -dm bash -c "grabserial -d /dev/ttyACM0 -e 1 -o /tmp/ultimpes -Q"
sleep 0.1
echo -en '\x05' >/dev/ttyACM0
sleep 0.1
if [ -s /tmp/ultimpes ] #if i have data i use it, otherwise recursive call. scale dont send data if weight is not stable
then
pes=$(cat /tmp/ultimpes |cut -d `echo -e '\x0D'` -f 1 |cut -d ' ' -f 2 |sed 's/^0*//' )
qdel="delete from ultimpes where ID=$idbascula;"
#q="INSERT INTO \`ultimpes\` (\`pes\`,\`ID\`) VALUES ('$pes','$idbascula');"#i try other modifications and save this for memory
q="
insert into ultimpes
(ID,pes)
Values( '$idbascula' , '$pes' );"
echo $pes >/tmp/pes
echo $qdel
echo $q
mysql -u$mysqluser -p$mypass -h$master Preus -e "$qdel"
mysql -u$mysqluser -p$mypass -h$master Preus -e "$q "
else
/home/bin/pesa
fi
Таблица - это таблица памяти, в которой они имеют только последний вес, поэтому я могу каждый раз удалять записи. mysql удаление работает хорошо.
mysql вставка не работает внутри скрипта, но она работает, если я набираю в чистом терминале всю строку, записывая:
mysql -uuser -psecret -hhost Preus -e "insert into ultimpes (ID,pes) Values('1' ,'90' );"
Таблица была создана с :
CREATE TABLE ultimpes (
ID tinyint unsigned NOT NULL,
pes int unsigned NOT NULL
) ENGINE='MEMORY';
Есть ли у вас какие-либо соображения относительно записи данных в mysql из сценария bash? В последний раз я делал это в начале 2000-х годов, и мне это удалось.
Я пытаюсь поставить значения без кавычек, но говорю ту же ошибку
insert into ultimpes (ID,pes) Values( 1 , '54' ); #or values ('1'. '54')
ERROR 1265 (01000) at line 2: Data truncated for column 'pes' at row 1
Но если я обрежу кавычки из pes, это изменит ошибку для этого
insert into ultimpes (ID,pes) Values( 1 ,54 );
ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' )' at line 3