如何插入复杂的linux终端命令';s输出到mysql数据库表
我正在尝试转换以下终端命令:如何插入复杂的linux终端命令';s输出到mysql数据库表,mysql,linux,database,terminal,output,Mysql,Linux,Database,Terminal,Output,我正在尝试转换以下终端命令: date +"%m/%d/%Y %H:%M:%S" 其输出为: 12/07/2017 19:49:48 将来自日期+%m/%d/%Y%H:%m:%S“的终端输出作为mysql数据库表中的值插入到终端命令中: 我尝试使用的完整终端命令是: echo "INSERT INTO block (date, data, sha256) VALUES ($(date +"%m/%d/%Y %H:%M:%S"), "dogs are loyal", "6324542a2ce0b
date +"%m/%d/%Y %H:%M:%S"
其输出为:
12/07/2017 19:49:48
将来自日期+%m/%d/%Y%H:%m:%S“
的终端输出作为mysql数据库表中的值插入到终端命令中:
我尝试使用的完整终端命令是:
echo "INSERT INTO block (date, data, sha256) VALUES ($(date +"%m/%d/%Y %H:%M:%S"), "dogs are loyal", "6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637dabda113e35e");"| mysql blockchain -u root;
我得到以下错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '19:49:48, dogs are loyal, 6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637da' at line 1
奇怪的是,我从错误中注意到“date”命令运行,但它只捕获%H:%M:%S
,因为它提到19:49:48
我尝试在mysql命令行界面中直接运行该命令,但出现以下错误:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '19:49:48, dogs are loyal, 6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637da' at line 1
错误1305(42000):功能区块链。$不存在
我的数据库详细信息如下:
我的数据库名为“区块链”,表名为“区块”,表说明如下
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| blockchain |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.01 sec)
mysql> show tables;
+----------------------+
| Tables_in_blockchain |
+----------------------+
| block |
+----------------------+
mysql> desc block;
+--------+-------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+----------------+
| id | int(255) unsigned | NO | PRI | NULL | auto_increment |
| date | varchar(20) | NO | | NULL | |
| data | varchar(250) | NO | | NULL | |
| sha256 | varchar(64) | NO | | NULL | |
+--------+-------------------+------+-----+---------+----------------+
基于这些错误,我假设它与特殊字符有关,主要是“$”,但也可能是命令中的“+”或“”空格
我做了一些研究,并尝试使用escape字符esr''vs``vs“$”vs“\”使命令的输出成为mysql表的插入值,但是
我仍在遇到一些问题,我希望作为最后的手段接触到这个社区
提前感谢您的耐心和帮助
真诚地
作为一个谦逊的学生我认为您生成的sql在数据周围没有正确的引用。请尝试以下操作:
echo "INSERT INTO block (date, data, sha256) VALUES ('$(date +"%m/%d/%Y %H:%M:%S")', "\'dogs are loyal\'", "\'6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637dabda113e35e\'");"| mysql blockchain -u root;
对于我的ubuntu虚拟机,它工作得很好 我认为您生成的sql在数据周围没有正确的引号。请尝试以下操作:
echo "INSERT INTO block (date, data, sha256) VALUES ('$(date +"%m/%d/%Y %H:%M:%S")', "\'dogs are loyal\'", "\'6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637dabda113e35e\'");"| mysql blockchain -u root;
对于我的ubuntu虚拟机,它工作得很好 您是否尝试过在终端中使用单引号围绕值运行命令,即
“dogs is忠诚”
?您是否尝试过在终端中使用单引号围绕值运行命令,即“dogs is忠诚”
?谢谢您,这是一个简单的修复,我在正确的轨道上,但在错误的位置尝试了\和。我能够使用你的建议:我为新手的错误道歉,但我学到了很多。谢谢你的时间和耐心<代码>root@kali:~#echo“插入块(日期、数据、sha256)值(“$(日期+%m/%d/%Y%H:%m:%S”),“‘狗是忠诚的’,“‘6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637dabda113e35e’”;“| mysql区块链-u根代码>然后它写到了桌面谢谢你M H Rasel,这是一个简单的修复,我在正确的轨道上,但在错误的位置尝试了\和。我能够使用你的建议:我为新手的错误道歉,但我学到了很多。谢谢你的时间和耐心<代码>root@kali:~#echo“插入块(日期、数据、sha256)值(“$(日期+%m/%d/%Y%H:%m:%S”),“‘狗是忠诚的’,“‘6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637dabda113e35e’”;“| mysql区块链-u根代码>并写入表中