2017-12-12 1 views
0

: 터미널 명령에나는 다음과 같은 터미널 명령으로 변환하려고

12/07/2017 19:49:48

: 출력

date +"%m/%d/%Y %H:%M:%S" 

인을 그것은 date +"%m/%d/%Y %H:%M:%S"의 터미널 출력을 mysql 데이터베이스 테이블의 값으로 삽입합니다 :

전체 터 내가 사용하려고 minal 명령은 다음과 같습니다

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 

어떤 이상한 것은 내가 오류를 발견 "날짜"명령이 실행이 있지만 그것은 단지입니다을 19:49:48이 언급되었으므로 %H:%M:%S을 캡처합니다.

나는 MySQL의 명령 줄 인터페이스에 직접 명령을 실행하려고 다음과 같은 오류가있어 다음과 같이

ERROR 1305 (42000): FUNCTION blockchain.$ does not exist

내 데이터베이스 세부

은 다음과 같습니다

내 데이터베이스 이름이 "blockchain"입니다, 테이블을 "블록"이라고하며 테이블 설명은 아래에 나열되어 있습니다. 이러한 오류를 바탕으로

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 |    | 
+--------+-------------------+------+-----+---------+----------------+ 

, 나는 그것이 특수 문자와 함께 할 수있는 뭔가 주로 "$"가 가정입니다, 그러나 또한 "+"또는 명령에 ""빈 공간 일 수 있습니다.

나는 약간의 연구를했는데, 명령의 출력을 mysql 테이블에 INSERT 값으로 사용하기 위해 escape characterses ''vs``vs "$"vs "\"를 가지고 놀려고했지만 나는 여전히 몇 가지 문제를 겪고있다. 최후의 수단으로이 커뮤니티에 연락하고 싶습니다.

미리 양해 해 주셔서 감사합니다.

+0

"dogs are loyal"이라는 값을 작은 따옴표로 묶어서 터미널에서 명령을 실행 해 보았습니까? –

답변

1

감사

,

겸손하게 최선을 다하고 학생은 나는 당신의 생성 된 SQL 데이터 주위에 올바른 인용이없는 것 같아요. 다음을 시도해보십시오.

echo "INSERT INTO block (date, data, sha256) VALUES ('$(date +"%m/%d/%Y %H:%M:%S")', "\'dogs are loyal\'", "\'6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637dabda113e35e\'");"| mysql blockchain -u root; 

제 우분투 VM에서는 정상적으로 작동합니다.

+0

고마워요 M H Rasel, 그것은 간단한 수정 이었지만 올바른 길을 가고 있었지만 잘못된 위치에 \와 '시도했습니다. 나는 당신의 권고를 사용할 수 있었다 : 나는 초심자의 실수를 사과하지만 많은 것을 배웠다. 시간과 인내심에 감사드립니다. VALUE ('날짜 + % % m/% d/% Y % H : % M : % S') '루트 @ \ '개들은 충성스러운 \ "", "\'6324542a2ce0b80ad32e45b5ca8e8b9dd02da8802c6fc9939637dabda113e35e \ '")); mysql blockchain -u root;' 그리고 테이블에 썼습니다. – unitelife