Error 1064 when updating a table - mysql

When updating a table I get an error:
My table is
speech
values:
no speec check
1 45 0
and the structure is :
1 -no int(100) No None AUTO_INCREMENT Browse distinct values Change Drop Primary Unique Index Fulltext
2- speec varchar(100) latin1_swedish_ci No None Browse distinct values Change Drop Primary Unique Index Fulltext
3 - check int(100) No None Browse distinct values Change Drop Primary Unique Index Fulltext
when updating using the command :
UPDATE speech set check=1 where no=1
I get the error:
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 'check=1 where no=1' at line 1
Please help me in this issue

CHECK is a reserved, word http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
You need to escape it using backtics as
UPDATE speech set `check`=1 where no=1

Related

mysql error for a create table statement from shell client

Im trying to run the following from the mysql shell client:
MySQL localhost:33060+ ssl plaything SQL > CREATE TABLE areas (id SERIAL PRIMARY KEY, area_name VARCHAR);
and keep getting the following error:
ERROR: 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 ')' at line 1
where could I be going wrong?
solved by yoss:
try this: CREATE TABLE areas ( id int NOT NULL AUTO_INCREMENT, area_name varchar(255), PRIMARY KEY (id) );
varchar did not have number of characters specified in the original statement

How to add AUTO_INCREMENT to an existing table [duplicate]

I would like to change the column type to AUTO_INCREMENT within an existing MyISAM1 database table. The databse currently has thousands of records where the column value is very important. It is crucial that the current value is not affected. I want to increment from the latest higheste value.
I tried this within phpmyadmin (sql generated by phpmyadmin) and got an error.
ALTER TABLE `myTable` CHANGE `myCol1` `myCol1` INT(11) NOT NULL AUTO_INCREMENT;
The error I got was:
ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '2197' for key 'PRIMARY'
I did some reaserch and found that by adding an offset it should resolve my issue. I tried this but was greeted with a syntax error.
ALTER TABLE `myTable` CHANGE `myCol1` INT(11) NOT NULL AUTO_INCREMENT = 2500
error:
#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 'INT(11) NOT NULL AUTO_INCREMENT = 2500' at line 1
I have also tried the above sql without declaring INT
Simply put I need to keep the existing records as they are but add auto increment ability to column myCol1 starting from number 2500 (as currently the last item is 2498). This column is also the Primary Key.
This is not a duplicate question as the solutions I have found for other answers do not resolve my issue.
You are using wrong syntax, try below command-
ALTER TABLE `myTable` CHANGE `myCol1` `myCol1` INT(11) NOT NULL AUTO_INCREMENT, auto_increment=2500;

sql create table errors MySQL server version

write a sql sentence to create a table in MySQL
CREATE TABLE fb_web_user_feeds(id bigint not null primary key auto_increment,host_id bigint,,author varchar(64),time varchar(64),user_feed text)
BUT IT ERRORS:
pymysql.err.ProgrammingError: (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 'author varchar(64),time varchar(64),user_feed text)' at line 1")
could you please tell me the reason
It's because you have 2 commas here:
host_id bigint,,author varchar(64)
It should just be 1 comma making your syntax be:
CREATE TABLE fb_web_user_feeds(id bigint not null primary key auto_increment,host_id bigint,author varchar(64),time varchar(64),user_feed text)

Insert Column Name into Table if Column Name does not already exist

IF COL_LENGTH('Characters', 'name') IS NULL
BEGIN
ALTER TABLE `Characters` ADD `name` INT(32) UNSIGNED NOT NULL;
END
I am trying to write some sql that will insert a column name into the table "Characters" if it is not already existant, however I am getting errors which I do not understand (quite new to SQL) and I could use some help understanding why it is not working. I have gotten the IF part from another Question, and the ALTER part from the DBMS I'm using, PhpMyAdmin 2.11.4.
It is using MySQL 5.6 apparently and this is the error:
MySQL said: Documentation
#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 'IF COL_LENGTH('Characters', 'name') IS NULL
BEGIN
ALTER TABLE `Characters` AD' at line 1

Create table Order using MySQL & MariaDB giving 1064 error

I'm trying to create a table called Order using MySQL and MariaDB. I've stripped down everything except an id for the table. If I change the table name to something like Test, it works, but creating the table as Order, 'Order', or "Order" does not work.
SQL:
CREATE TABLE IF NOT EXISTS Order (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE = InnoDB;
Error message:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Order ( id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE = InnoDB' at line 1
But this works:
CREATE TABLE IF NOT EXISTS Test (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE = InnoDB;
MySQL version output:
mysql Ver 15.1 Distrib 5.5.33a-MariaDB, for debian-linux-gnu (x86_64) using readline 5.1
Use backticks, because order is a reserved word:
CREATE TABLE `Order` ....
or better, don't do this. It will create confusion.
It's a reserved word. See the list of reserved words at http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
If you need to use a reserved word as a table name or column name, put it in back quotes. But you're better off avoiding reserved words, because they will cause much confusion and many mistakes in the future.