2016-04-10 2 views
1

Так что я получаю сообщение об ошибке при попытке запустить этот скрипт в MariaDB, который гласит: «ERROR 1064 (42000): у вас есть ошибка в синтаксисе SQL; соответствует версии сервера MariaDB для корректного синтаксиса использовать вблизиОшибка синтаксиса Mariadb 1064 (42000)

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) 
); 
+0

Вы можете пожаловаться на беспорядок с именем таблицы в начале каждого имени столбца. –

+0

'DECIMAL' нуждается в' (m, n) 'после него. –

ответ

-1

У меня есть эта линия, и это дает мне эту ошибку синтаксиса 1064 (42000):

альтер стол дискотекам добавить ключ ЗАРУБЕЖНОГО (id_grupo) ссылка Grupos (id_grupo);

id_grupo - это первичный ключ в таблице grupos, ошибка появляется рядом с ключом (id_group) (id_group). Типы столбцов одинаковы в обеих таблицах. Я бегу на MariaDb 10.1.13. Должен ли я настраивать enything else ..utf8, кажется, является синтаксовой ошибкой. Если любое тело может дать мне руку с этими просьбами. Спасибо за общение!

+0

это не ответ –

1

Скопируйте &, вставив код в NotePad ++, а затем просмотрев его в шестнадцатеричном редакторе, вы увидите, что у вас есть 80 8b 0a в каждой из этих пустых строк между операторами.

Эта последовательность байтов представляет собой кодированную форму UTF-8 символа zero-width space.

Посмотрите, чтобы вы их удалили - тогда это должно сработать.

(Если вы используете NotePad ++ и плагин с шестнадцатеричным редактором, то в шестнадцатеричном представлении вы можете просто заменить e2 80 8b пустой строкой. В противном случае в любом другом текстовом редакторе, идущем в конец предыдущей строки, выбирая все оттуда по пустой строке до начала следующей строки, а затем замена выбора нажатием клавиши ввода также должна работать.)

Смежные вопросы