Py学习  »  DATABASE

简单的列更改查询在MySQL 5.7中不起作用

Artur Stępień • 6 年前 • 1867 次点击  

我有一个由MySQL Workbench 8创建的更新查询,如下所示:

-- MySQL Workbench Synchronization
-- Generated: 2019-12-16 00:30
-- Model: New Model
-- Version: 1.0
-- Project: Name of the project
-- Author: user0

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ALLOW_INVALID_DATES';

ALTER TABLE `best_bpgallery`.`k96qw_bpgallery_images` 
CHANGE COLUMN `language` `language` NCHAR(7) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci' NOT NULL DEFAULT '*' ;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

对我来说它看起来很好,但是当我运行它时失败了:

Executing SQL script in server
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 'CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci' NOT NULL DEFAULT '*'' at line 2
SQL Code:
        ALTER TABLE `best_bpgallery`.`k96qw_bpgallery_images` 
        CHANGE COLUMN `language` `language` NCHAR(7) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci' NOT NULL DEFAULT '*' 

SQL script execution finished: statements: 3 succeeded, 1 failed

Fetching back view definitions in final form.
Nothing to fetch

我甚至把这个问题和 ALTER TABLE documentation 我觉得很好。怎么回事?我错过了什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51345
文章 [ 1 ]  |  最新文章 6 年前
nbk
Reply   •   1 楼
nbk    6 年前

例如,您必须将nchar更改为varchar。

ALTER TABLE `best_bpgallery`.`k96qw_bpgallery_images` 
CHANGE COLUMN `language` `language` VARCHAR(7) CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci' NOT NULL DEFAULT '*' ;

nchar不支持charecter集