首页 > 解决方案 > 如何在 MYSQL 版本(6.0.11-alpha-community)中创建生成列

问题描述

我在 MYSQL 版本(6.0.11-alpha-community)中创建了一个带有生成列的表

如下所示,我修改了 Generated Column 的结构

一 :

CREATE TABLE tbl_MAE_Customers(
  ID INT AUTO_INCREMENT PRIMARY KEY, 
  CustomerName VARCHAR(30), 
  PhoneNmbr VARCHAR(15), 
  Email VARCHAR(30),
  TCSShares INT,
  InfosysShares INT, 
  TechmShares INT, 
  TotalShares INT GENERATED ALWAYS AS (TCSShares+InfosysShares+TechmShares), 
  Remarks VARCHAR(200)
)

二 :

CREATE TABLE tbl_MAE_Customers(
  ID INT AUTO_INCREMENT PRIMARY KEY, 
  CustomerName VARCHAR(30), 
  PhoneNmbr VARCHAR(15), 
  Email VARCHAR(30),
  TCSShares INT,
  InfosysShares INT, 
  TechmShares INT, 
  TotalShares INT  AS (TCSShares+InfosysShares+TechmShares),
  Remarks VARCHAR(200)
)

第三 :

CREATE TABLE tbl_MAE_Customers(
  ID INT AUTO_INCREMENT PRIMARY KEY,
  CustomerName VARCHAR(30),
  PhoneNmbr VARCHAR(15),
  Email varchar(30),
  TCSShares int,
  InfosysShares int, 
  TechmShares int, 
  TotalShares  as (TCSShares+InfosysShares+TechmShares), 
  Remarks varchar(200)
)

我尝试以多种方式修改生成列的结构,当我执行查询时,我收到以下错误:

查询:CREATE TABLE tbl_MAE_Customers(ID INT AUTO_INCREMENT PRIMARY KEY, CustomerName VARCHAR(30), PhoneNmbr VARCHAR(15), Email varchar...

错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“始终生成为 (TCSShares+InfosysShares+TechmShares), Remarks varchar(200))”附近使用正确的语法

执行时间:0 秒传输时间:0 秒总时间:0.001 秒

我是 MYSQL 的新手。

建议我如何在没有任何错误的情况下实现这一目标。

标签: mysqlmysql-error-1064

解决方案


从 2009 年 5 月起,您使用的是 MySQL 6.0 的 alpha 版本。6.0 分支从未脱离 alpha 状态。由于代码性能问题,它被取消了。老实说,您甚至可以找到它的副本,这真是令人惊讶!

MySQL 的进一步开发仍在继续,但版本变为 5.6。我知道这很令人困惑,但 5.6 比 6.0 更先进。但即使是 5.6 也太老了,以至于它已经过了生命的尽头。

GENERATED表达式列的语法是在 MySQL 5.7 中引入的。MySQL 6.0 和 5.6 不支持生成列。您必须使用当前版本才能获得对该功能的支持。


推荐阅读