GENERATED keyword as column title in a mysql table [duplicate] - mysql

This question already has answers here:
How do I escape reserved words used as column names? MySQL/Create Table
(4 answers)
Closed 6 years ago.
I would like to create a table with GENERATED as column in MySQL version 5.7.16. When I try below query it is giving error:
create table madhu (RECORDID VARCHAR(255) NOT NULL, GENERATED INTEGER NOT NULL);
Below is the error:
Error Code: 1064. 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 'GENERATED INTEGER NOT NULL)' at line 1 0.000 sec
It looks GENERATED is reserved key word. Is there away to have GENERATED as column? If I change the column it works anyway.

To escape reserved keywords use backticks or choose a different column name.
create table madhu
(
RECORDID VARCHAR(255) NOT NULL,
`GENERATED` INTEGER NOT NULL
);

Related

MySql gives an error for no reason at all? [duplicate]

This question already has an answer here:
Syntax error due to using a reserved word as a table or column name in MySQL
(1 answer)
Closed last year.
I am writing an mysql program (using the command line editor):
CREATE TABLE FLIGHTS (
FL_NO VARCHAR(10) NOT NULL PRIMARY KEY,
STARTING VARCHAR(20) NOT NULL,
ENDING VARCHAR(20) NOT NULL,
NO_FLIGTHS INT NOT NULL,
NO_STOPS INT NOT NULL
);
this is somehow gives an error which is surprising. any idea?
Error message:
ERROR 1064 (42000): 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 'STARTING VARCHAR(20) NOT NULL,
ENDING VARCHAR(20) NOT NULL,
NO_FLIGHTS INTEGER N' at line 3
STARTING and ENDING are keywords, and MySql does not accept keywords as column names, changing them should help...

Query for altering column to be nullabe not working [duplicate]

This question already has answers here:
How to add not null constraint to existing column in MySQL
(3 answers)
Closed 3 years ago.
I need to make column called start_date_data_id to be nullable.
I found this answer(Altering a column to be nullable) and tried to do it on described way.
Description of that column: (| start_date_data_id| bigint(20)| NO | MUL | NULL | |).
Query:
ALTER TABLE attenddb.company_group_user_settings
ALTER COLUMN start_date_data_id bigint(20) NULL;
Error:
ERROR 1064 (42000): 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 'bigint(20) NULL' at line 1
Can someone tell me why is it not working?
Try this:
ALTER TABLE attenddb.company_group_user_settings
MODIFY start_date_data_id bigint(20) NULL;

Why would this MySQL query give an error? [duplicate]

This question already has answers here:
When to use single quotes, double quotes, and backticks in MySQL
(13 answers)
Closed 5 years ago.
I can't for the life of me figure out what's wrong with this query:
CREATE TABLE IF NOT EXISTS 'plaintext' (
'id' INT NOT NULL AUTO_INCREMENT,
'name' VARCHAR NOT NULL,
'text' TEXT NOT NULL,
PRIMARY KEY ('id')
)
I am running MySQL version 5.7.14 on WAMP. I am getting this error:
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 ''id' INT NOT
NULL AUTO_INCREMENT, 'name' VARCHAR NOT NULL, 'text' TEX' at line 2
When trying out the query in phpmyadmin it told me that a symbol name and column definition was expected near 'id' on line 2, and there is an unexpected beginning of a statement near 'id' at line 5.
No clue what this even means to be completely honest with you, I'm quite new to MySQL.
Thanks in advance!
David
I think that the issue is that you are not providing a size for your VARCHAR
CREATE TABLE IF NOT EXISTS 'plaintext' (
'id' INT NOT NULL AUTO_INCREMENT,
'name' VARCHAR(100) NOT NULL,
'text' TEXT NOT NULL,
PRIMARY KEY ('id')
)

Unable to create table with column name "schemas" [duplicate]

This question already has answers here:
Is "key" a reserved word in MySqli? I'm getting an error
(2 answers)
Closed 6 years ago.
When I tried to execute following statement.
create table user_schemas (user_id varchar(255) not null, schemas varchar(255));
I am getting following error.
ERROR 1064 (42000): 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 'schemas varchar(255))' at line 1
When I change the column name "schemas" to something else, it is working fine.
mysql> create table user_schemas (user_id varchar(255) not null, schemas varchar(255));
ERROR 1064 (42000): 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 'schemas varchar(255))' at line 1
mysql>
mysql> create table user_schemas (user_id varchar(255) not null, rules varchar(255));
Query OK, 0 rows affected (0.01 sec)
Any idea on how to solve this problem??
If you want to use reserved words in the SQL syntax you must use Backticks (`) like:
create table user_schemas (
user_id varchar(255) not null,
`schemas` varchar(255)
);

Why am I getting a syntax error when trying to create a table? [duplicate]

This question already has an answer here:
Syntax error due to using a reserved word as a table or column name in MySQL
(1 answer)
Closed 1 year ago.
I am trying to create a new table using the following:
CREATE TABLE onsale (
id INT AUTO_INCREMENT,
name VARCHAR(255),
desc TEXT,
image_file VARCHAR(255)
);
However, I keep getting an error:
ERROR 1064: (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB version for the right syntax to use near: 'desc TEXT, image_file VARCHAR(255))' at line 1
I don't see what is wrong with my syntax. It seems okay to me (obviously).
Can you tell me what I am doing wrong?
Thank you for your help.
The name you used for your column desc is a reserved word. You also need primary key (id):
CREATE TABLE onsale (
id INT AUTO_INCREMENT,
name VARCHAR(255),
description TEXT,
image_file VARCHAR(255),
primary key (id)
);