【问题标题】:Cannot create NVARCHAR column in MariaDb/Mysql无法在 MariaDb/Mysql 中创建 NVARCHAR 列
【发布时间】:2017-08-16 08:10:12
【问题描述】:

我正在使用 MariaDb 服务器(版本 15.1 Distrib 10.2.7-MariaDB)。 当我执行时

CREATE TABLE `my_table` (
   `id` INT NOT NULL,
   `name` NVARCHAR(64) NULL,
   PRIMARY KEY (`id`)
);

描述输出:

MariaDB [db]> describe my_table;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(64) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

为什么没有错误,而“name”列的数据类型是varchar(不是nvarchar)?

数据库架构详细信息:

Default collation: utf8_general_ci
Default characterset: utf8

【问题讨论】:

  • 也许这部分文档会有所帮助:NATIONAL VARCHAR 是定义 VARCHAR 列应使用某些预定义字符集的标准 SQL 方法。 MariaDB 使用 utf8 作为此预定义字符集,MySQL 4.1 及更高版本也是如此
  • @Jens - 你真的比我快了 60 秒。恕我直言,这是“正确答案”。
  • @Jens - 许多版本的默认值仍然是latin1。最后,在 8.0 中,默认值变为 utf8mb4

标签: mysql sql mariadb


【解决方案1】:

NVARCHAR 是 MySQL/MariaDB 中VARCHAR 的同义词。但是您需要添加 CHARACTER SET utf8mb4 以确保您获得完整的 UTF-8 支持。

您显示为该数据库的默认值只是子集,称为“utf8”。它不会处理表情符号或一些中文。

【讨论】:

    猜你喜欢
    • 2020-01-10
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2017-01-02
    • 2017-02-06
    • 1970-01-01
    相关资源
    最近更新 更多