programing

Mariadb 구문 오류 1064(42000)

sourcejob 2022. 10. 25. 17:44
반응형

Mariadb 구문 오류 1064(42000)

따라서 MariaDB에서 이 스크립트를 실행하려고 하면 다음과 같은 오류가 발생합니다.「 ERROR 1064 ( 42000 ) :SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 nears에서 사용할 올바른 구문을 확인하십시오.

CREATE TABLE customers (
  customer_id int NOT NULL,
  customer_f

1행에서

이상한 점은 MariaDB가 명령어의 첫 번째 줄을 읽고 다음 줄의 몇 줄을 1줄로 읽는 것처럼 보인다는 것입니다.전체 스크립트는 아래와 같습니다.누구라도 도와주시면 감사하겠습니다.

DROP TABLE customers;
DROP TABLE orders;
DROP TABLE products;
DROP TABLE orderitem;
​
CREATE TABLE customers (
customer_id INT NOT NULL AUTO_INCREMENT,
customer_firstname VARCHAR(20) NOT NULL,
customer_lastname VARCHAR(40) NOT NULL,
customer_phone CHAR(10) NOT NULL,
customer_email VARCHAR(60) NOT NULL,
customer_address VARCHAR(40) NOT NULL,
customer_city VARCHAR(40) NOT NULL,
customer_state CHAR(2) NOT NULL,
customer_zip VARCHAR(10) NOT NULL,
customer_aptnum VARCHAR(5) NOT NULL,
customer_pass CHAR(40) NOT NULL,
customer_type VARCHAR(10) NOT NULL,
PRIMARY KEY (customer_id),
INDEX customer_fullname (customer_firstname, customer_lastname),
UNIQUE (customer_email)
); 
​
CREATE TABLE orders (
order_id INT NOT NULL AUTO_INCREMENT,
order_datetime DATETIME NOT NULL,
order_trackingnumber VARCHAR(20) NOT NULL,
order_shipdate DATETIME NOT NULL,
order_shipmethod VARCHAR(10) NOT NULL,
order_shipcarrier VARCHAR(10) NOT NULL,
order_totalprice DECIMAL,
customer_id  INT NOT NULL,
PRIMARY KEY (order_id),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
UNIQUE (order_trackingnumber)
); 
​
​
CREATE TABLE products (
product_id VARCHAR(30) NOT NULL AUTO_INCREMENT,
product_beginningstockdate DATETIME NOT NULL,
product_endstockdate DATETIME,
product_category VARCHAR(15) NOT NULL,
product_name VARCHAR(60) NOT NULL,
product_availablequantity SMALLINT NOT NULL,
product_totalquantity SMALLINT NOT NULL,
product_price  DECIMAL NOT NULL,
product_taxable DECIMAL NOT NULL,
product_itemstatus VARCHAR(15) NOT NULL,
product_discountpercent DECIMAL,
product_soldinstore char(3),
product_soldonwebsite char(3),
PRIMARY KEY (product_id),
UNIQUE (product_name)
); 
​
/*INSERT INTO products (product_description, product_beginningstockdate, product_endstockdate, product_category, product_name, product_availablequantity, product_totalquantity, product_price, product_taxable, product_itemstatus, product_discountpercent, product_soldinstore, product_soldonwebsite) 
VALUES 
(...),
(...),
........ */
​
CREATE TABLE orderitem (
orderitem_id INT NOT NULL AUTO_INCREMENT,
order_id INT NOT NULL,
product_id VARCHAR(30) NOT NULL,
orderitem_priceperunit DECIMAL NOT NULL,
orderitem_quantityordered TINYINT NOT NULL,
PRIMARY KEY (orderitem_id),
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (product_id) REFERENCES orders(product_id)
); 

코드를 복사하여 NotePad++에 붙여넣은 후 16진 에디터로 표시하면 다음과 같이 표시됩니다.80 8b 0a각 문장의 빈 행에 표시해 주세요.

이 바이트 시퀀스는 UTF-8 인코딩 형식의 제로스페이스 문자입니다.

그것들을 삭제해 주세요.그러면 동작합니다.

(NotePad++와 16진수 에디터 플러그인을 사용하는 경우 16진수 뷰에서 간단히 대체할 수 있습니다.e2 80 8b빈 끈으로.그렇지 않은 경우 다른 텍스트에디터에서는 이전 행의 마지막 행으로 이동하여 빈 행에서 다음 행의 시작까지 모든 항목을 선택한 후 Enter 키를 눌러 선택 항목을 바꿉니다.)

저도 비슷한 좌절감을 느꼈고, 제 절차에서 구분 기호를 변경해야 한다는 것을 깨달았습니다.아마 여기도 효과가 있을 거예요.

DELIMITER //
CREATE PROCEDURE
....
BEGIN
END //
DELIMITER ;

언급URL : https://stackoverflow.com/questions/36526950/mariadb-syntax-error-1064-42000

반응형