What is wrong in this MySQL syntax? - mysql

What is wrong here?
I exported this table from my local pma and trying to upload it on remote sever.
CREATE TABLE IF NOT EXISTS `posts` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`banna` text COLLATE utf8_croatian_ci,
`bannb` text COLLATE utf8_croatian_ci,
`img` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`images` text COLLATE utf8_croatian_ci,
`title` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`subtitle` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`story` mediumtext COLLATE utf8_croatian_ci,
`status` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`tags` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`auth` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`moder` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`linked` json DEFAULT NULL,
`inde` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=382 DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci
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 'json DEFAULT NULL,
`inde` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL' at line 15

I have run your query on mysql version 5.7.21, it works fine, No error thrown, so it seems to me mysql version related issue raised in your site, here is the execution result
CREATE TABLE IF NOT EXISTS `posts` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`banna` text COLLATE utf8_croatian_ci,
`bannb` text COLLATE utf8_croatian_ci,
`img` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`images` text COLLATE utf8_croatian_ci,
`title` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`subtitle` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`story` mediumtext COLLATE utf8_croatian_ci,
`status` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`tags` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`auth` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`moder` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL,
`linked` json DEFAULT NULL,
`inde` int(11) DEFAULT NULL,
`count` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
AUTO_INCREMENT = 382
DEFAULT CHARSET = utf8
COLLATE = utf8_croatian_ci
0 row(s) affected 1.535 sec

Related

How does this data truncation possible?

I am trying to insert some datetime values and I came up with a non sense data truncation problem, and I have no idea how to solve and what is causing it. Hope someone helps!
I have the following table:
CREATE TABLE tb_cliente (
id bigint unsigned NOT NULL AUTO_INCREMENT,
st_servidor tinyint(1) NOT NULL,
nm_nome varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
nm_nome_social varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
cd_matricula varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
cd_siape varchar(255) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
dt_nascimento timestamp NOT NULL,
sexo varchar(1) COLLATE utf8mb4_unicode_ci NOT NULL,
nacionalidade varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
ano_chegada_no_pais varchar(255)
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
naturalidade varchar(255) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
uf_nascimento varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
estado_civil varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
sn_conjuge_servidor tinyint(1) DEFAULT NULL,
nm_conjuge varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
nm_pai varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
nm_mae varchar(255) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
raca varchar(255) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
cor_dos_olhos varchar(255) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
cor_dos_cabelos varchar(255) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
sn_alergico tinyint(1) DEFAULT NULL,
grau_de_instrucao varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
dt_conclusao timestamp NULL DEFAULT NULL,
altura decimal(8,2) DEFAULT NULL,
tipo_sanguineo varchar(255) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
sn_doador_de_orgaos tinyint(1) DEFAULT NULL,
nome_anterior varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
endereco varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
nr_cep varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
nr_cpf varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
telefone varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
telefone_celular varchar(255)
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
email_institucional varchar(255)
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
email_externo varchar(255)
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
email_comunicados varchar(255)
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
endereco_correspondencia varchar(255)
COLLATE utf8mb4_unicode_ci DEFAULT NULL,
nr_cep_correspondencia varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
created_at timestamp NULL DEFAULT NULL,
updated_at timestamp NULL DEFAULT NULL,
user_id bigint unsigned DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY tb_servidor_nr_cpf_unique (nr_cpf),
KEY tb_servidor_user_id_index (user_id),
CONSTRAINT tb_servidor_user_id_foreign FOREIGN KEY (user_id)
REFERENCES tb_users (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
When I try to insert timestamp using year 1948, I get this error:
SQL Error [1292] [22001]: Data truncation: Incorrect datetime value: '1948-07-19 00:00:00' for column 'dt_nascimento' at row 1
But when I try to insert timestamp using year 1999, it inserts successfully using the following query:
insert into tb_cliente (
updated_at, created_at, st_servidor,
nm_nome, cd_matricula, dt_nascimento,
sexo, nacionalidade, uf_nascimento,
estado_civil, grau_de_instrucao, nr_cpf,
telefone, telefone_celular, email_institucional, email_externo)
values ('2022-10-25 00:00:00', '2022-10-25 00:00:00', '1',
'User name 1', '000000', '1999-07-19 00:00:00','M',
'1', 'AC', 'CASADO','ENSINO' , '000000', '000000', '000000',
'USER#UOL.COM.BR', 'USER#UOL.COM.BR' )
Mysql Server 8.0
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html says:
A timestamp. The range is '1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999' UTC.
In other words, '1948-07-19 00:00:00' is more than 21 years earlier than the earliest date a TIMESTAMP can store.
You should use DATETIME if you want dates outside this range.

How to import a table that was deleted with foreign keys?

I have deleted a table from my server called 'companies' that has foreign keys and also has relationships with other tables. Now I'm trying to import the table again with a backup I download, but it throws an error of incorrectly formed foreign keys
I have tried to create just the table with 2 charts a name and an id, but it's not working it also throws the error of Foreign key constraint is incorrectly formed.
CREATE TABLE `companies` (
`id` int(10) UNSIGNED NOT NULL,
`company_name` varchar(191) COLLATE utf8_unicode_ci NOT NULL,
`company_email` varchar(191) COLLATE utf8_unicode_ci NOT NULL,
`company_phone` varchar(191) COLLATE utf8_unicode_ci NOT NULL,
`logo` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL,
`login_background` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL,
`address` text COLLATE utf8_unicode_ci NOT NULL,
`website` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL,
`currency_id` int(10) UNSIGNED DEFAULT NULL,
`package_id` int(10) UNSIGNED DEFAULT NULL,
`package_type` enum('monthly','annual') COLLATE utf8_unicode_ci NOT NULL
DEFAULT 'monthly',
`timezone` varchar(191) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Asia/Kolkata',
`date_format` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'd-m-Y',
`time_format` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'h:i a',
`locale` varchar(191) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'en',
`latitude` decimal(10,8) NOT NULL DEFAULT 26.91243360,
`longitude` decimal(11,8) NOT NULL DEFAULT 75.78727090,
`leaves_start_from` enum('joining_date','year_start') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'joining_date',
`active_theme` enum('default','custom') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'default',
`status` enum('active','inactive','license_expired') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'active',
`last_updated_by` int(10) UNSIGNED DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`stripe_id` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL,
`card_brand` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL,
`card_last_four` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL,
`trial_ends_at` timestamp NULL DEFAULT NULL,
`licence_expire_on` date DEFAULT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Error Message:
(Error: 150 "Foreign key constraint is incorrectly formed")
First is to get all foreign keys of "Comapanies" table using this query.
Then drop all foreign keys
ALTER TABLE `companies`
DROP FOREIGN KEY `id_name_fk`;
Then execute your create table statement

How to fix 1709 - Index column size too large. The maximum column size is 767 bytes. in mysql in XAMPP

I'm importing a new table as Users, into my database but it is showing an error
1709 - Index column size too large. The maximum column size is 767 bytes.
I am having
Server version: 10.1.16-MariaDB
PHP version: 7.2.14
phpmyAdmin Version : Version information: 4.8.4
DROP TABLE IF EXISTS `users`;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`first_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`last_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`email_show` tinyint(1) NOT NULL DEFAULT '0',
`email_confirmed` tinyint(1) NOT NULL DEFAULT '0',
`iso2` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`phone` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`dob` date DEFAULT NULL,
`gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0=> Not Specified,1=> Male, 2=> Female',
`phone_show` tinyint(1) NOT NULL DEFAULT '0',
`phone_confirmed` tinyint(1) NOT NULL DEFAULT '0',
`country_id` int(10) UNSIGNED DEFAULT NULL,
`state_id` int(10) UNSIGNED DEFAULT NULL,
`city_id` int(11) DEFAULT NULL,
`confirmation_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_by` int(10) UNSIGNED DEFAULT NULL,
`updated_by` int(10) UNSIGNED DEFAULT NULL,
`password` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
`options` text COLLATE utf8mb4_unicode_ci,
`confirmed` tinyint(1) NOT NULL DEFAULT '0',
`active` tinyint(1) NOT NULL DEFAULT '0',
`phone_code` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`provider` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`provider_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`company_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`portfolio` text COLLATE utf8mb4_unicode_ci,
`opening_time` time DEFAULT NULL,
`closing_time` time DEFAULT NULL,
`address` text COLLATE utf8mb4_unicode_ci,
`education` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`notary_number` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`monday_opening_time` time DEFAULT NULL,
`monday_closing_time` time DEFAULT NULL,
`thuesday_opening_time` time DEFAULT NULL,
`thuesday_closing_time` time DEFAULT NULL,
`wednesday_opening_time` time DEFAULT NULL,
`wednesday_closing_time` time DEFAULT NULL,
`thursday_opening_time` time DEFAULT NULL,
`thursday_closing_time` time DEFAULT NULL,
`friday_opening_time` time DEFAULT NULL,
`friday_closing_time` time DEFAULT NULL,
`saturday_opening_time` time DEFAULT NULL,
`saturday_closing_time` time DEFAULT NULL,
`sunday_opening_time` time DEFAULT NULL,
`sunday_closing_time` time DEFAULT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_unique` (`email`),
KEY `users_country_id_index` (`country_id`),
KEY `users_area_id_index` (`state_id`),
KEY `users_created_by_index` (`created_by`),
KEY `users_updated_by_index` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
MySQL said:
1709 - Index column size too large. The maximum column size is 767 bytes.
In the last line of the creation table code try changing this:
ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
To this:
ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COLLATE=utf8mb4_unicode_ci;

Create Hibernate For Joining Table

I have to join 2 tables. The column is want to join is email from candidate table and password from user table. How to do it. Can Someone Help me. candidate
table is Shown Below:
CREATE TABLE `candidate` (`candidate_id` bigint(12) NOT NULL,`user_id`int(11) DEFAULT NULL,`firstname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,`lastname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,`dob` date DEFAULT NULL,`gender` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,`phone` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `address_id` int(11) DEFAULT NULL, `profile_title` varchar(120) COLLATE utf8_unicode_ci DEFAULT NULL, `profile_summary` varchar(10000) COLLATE utf8_unicode_ci DEFAULT NULL, `total_experience` int(11) DEFAULT NULL COMMENT 'year,month', `current_location` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `current_salary` double DEFAULT NULL, `expected_salary` double DEFAULT NULL, `status` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `percentage` int(45) DEFAULT NULL,`updated_on` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `noticeperiod` int(11) DEFAULT NULL, `martialstatus` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `currentoffer` double DEFAULT NULL, `idproof` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL, `industry` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,`functionalarea` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, `functionalrole` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, `resign` bit(1) DEFAULT NULL,`preferlocation` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL,`type` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,`notice_period_update` timestamp NULL DEFAULT NULL `passport` bit(1) DEFAULT NULL,`gross_salary` double DEFAULT NULL,`profile_type` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL,`rrm_user_id` int(11) DEFAULT NULL, PRIMARY KEY (`candidate_id`), KEY `Candidate_Address_idx` (`address_id`),KEY `Can_user` (`user_id`),KEY `CandidateStatus_idx` (`status`),KEY `CandidatePercent_idx` (`percentage`),KEY `user_id_idx` (`rrm_user_id`),CONSTRAINT `Can_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `Candidate_Address`FOREIGN KEY (`address_id`) REFERENCES `address` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `user_id` FOREIGN KEY (`rrm_user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
User is:
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,`password` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,`first_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `last_name` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,`type` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,`active` bit(1) DEFAULT NULL,`deleted` bit(1) DEFAULT NULL,`timezone` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,`created_on` timestamp NULL DEFAULT NULL,`updated_on` timestamp NULL DEFAULT CURRENT_TIMESTAMP,`activationcode` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,`secure_key` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `username_UNIQUE` (`username`)) ENGINE=InnoDB AUTO_INCREMENT=1505 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
You need a very simple SQL query to do this:
SELECT
c.candidate_id,
c.user_id,
c.email,
u.password
FROM
candidate as c
JOIN user as u ON c.user_id = u.user_id
Working example:
http://sqlfiddle.com/#!9/0ba876/1
Try to learn some SQL before you try to progress in this field.
https://www.w3schools.com/sql/

Unrecognized data type - MYSQL

I created a database table in MySQL, but it would show up errors. Please help to solving this issue and constructive feedback is appreciated.
CREATE TABLE `bldsvs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`monday` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`tuesday` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`wednesday` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`thursday` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`friday` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`saturday` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`sunday` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
'positionID` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;