Mysql lower_case_table_名称设置为2,Workbench仍然不允许使用小写数据库名称

Mysql lower_case_table_名称设置为2,Workbench仍然不允许使用小写数据库名称,mysql,mysql-workbench,Mysql,Mysql Workbench,我已经在64位Windows 7上安装了带有MySql 5.6版的MySql Workbench 6.2 我想在数据库名和表名中使用大写字母。因此,我需要将变量小写字母\u table\u names设置为2。当我查看选项文件的“常规”选项卡时,它看起来如下所示: 单击“应用”将打开一个对话框,显示“没有更改”。 不管怎样,当我尝试创建一个大写字母的数据库时,我得到了警告: 服务器配置了小写字母\u table\u names=1,仅 允许在架构和表名称中使用小写字符 我感觉服务器上的my.in

我已经在64位Windows 7上安装了带有
MySql 5.6版的
MySql Workbench 6.2

我想在数据库名和表名中使用大写字母。因此,我需要将变量
小写字母\u table\u names
设置为2。当我查看选项文件的“常规”选项卡时,它看起来如下所示: 单击“应用”将打开一个对话框,显示“没有更改”。 不管怎样,当我尝试创建一个大写字母的数据库时,我得到了警告:

服务器配置了小写字母\u table\u names=1,仅 允许在架构和表名称中使用小写字符

我感觉服务器上的
my.ini
文件与选项文件配置中提到的文件不同。当我尝试手动添加此变量时 在我的
my.ini
文件中,我看到以下文本:

# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

这就是我几天来一直坚持创建模式的原因。

在Windows中,表命名不区分大小写。也就是说,您的
Customer
表和您的
Customer
表在Windows上总是相同的。这是NT文件系统的一个限制。这适用于MySQL服务器在Windows平台上运行时。您的工作台客户机在哪里运行并不重要

(在Linux、BSD等平台上,您可以对不同的表使用大小写混合的表名,但这被认为是非常糟糕的做法:只有当您想让同事发疯时才这样做。所以要小心。)

如果不使用此
小写\u表格\u名称
设置,则可以在表格名称中使用混合大小写,而不会出现问题


服务器启动时实际使用的
my.ini
文件通常位于
data
目录中。安装过程可以复制该文件的预加载版本,如
my.ini
上的
my.ini
,具体取决于您尝试执行的操作。

如果您的数据文件位于不同于C:驱动器的驱动器上,您实际上可能有2个“my.ini”文件,其中一个将在C:drive上,当您在Workbench中编辑选项时,该文件将被更改,而您的系统实际使用的“My.ini”将被忽略。
检查C:\Program Data\MySQL\MySQL(服务器版本),查看是否有.ini文件。如果是这样的话,您可能会发现它在文件的底部有更改,这些更改需要写入数据实际存储的驱动器上的实际工作.ini。

在工作台中转到:管理面板>选项文件>常规>系统>

检查“小写字母表名称”,输入值2

关闭工作台。 重新启动服务MYSQL56

请看这里的img

  • /etc/mysql/my.cnf
  • 添加以下行:
  • [mysqld]

    小写字母表名称=1

  • 重新启动mysql
    sudo/etc/init.d/mysql Restart

  • 在将
    小写字母表名称
    设置“其他”更改为默认值
    1
    之外的任何内容后,您甚至无法启动mysqld

    0
    =>如果在数据目录位于不区分大小写的文件系统(如Windows或macOS)上的系统上运行MySQL,则不应将
    小写字母表名称设置为
    0
    。这是一个不受支持的组合,可能导致挂起情况

    但让我们尝试将其更改为2:

    # Specifies the on how table names are stored in the metadata.
    # If set to 0, will throw an error on case-insensitive operative systems
    # If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.
    # If set to 2, table names are stored as given but compared in lowercase.
    # This option also applies to database names and table aliases.
    # NOTE: Modify this value after Server initialization won't take effect.
    lower_case_table_names=2
    
    C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --默认文件=“C:\Program Files\MySQL\MySQL服务器8.0\my.ini”

    初始化后,不允许更改此设置。 因此,
    小写字母表名称
    需要与
    --initialize
    一起设置

    禁止使用与服务器初始化时使用的设置不同的
    小写\u table\u names
    设置启动服务器。这种限制是必要的,因为各种数据字典表字段使用的排序规则基于服务器初始化时定义的设置,使用不同的设置重新启动服务器将导致标识符排序和比较方式不一致

    mysqld--initialize--console--lower_case_table_names=2

    然后,在使用
    lower\u case\u table\u names=2再次初始化服务器之后,您将在workbench中遇到以下错误:

    A server configuration problem was detected. The server is in a system that does not properly support the selected lower_case_table_names option value. Some problems may occur.
    
    显示变量,如
    小写字母表名称

    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | lower_case_table_names | 2     |
    
    因此结论:在Windows上,将设置保留为1,因为0或2无法工作,或者正如他们所说的:可能会出现一些问题

    不过,现在我的数据库和表名显示为大写字母。 这其实没什么作用,因为比较总是:

     # If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.
     # If set to 2, table names are stored as given but compared in lowercase.
    

    Nicholas

    您是否尝试重新启动mysql服务?@arnoudhgz如果我重新启动,您的意思是进入导航器工具栏的
    实例
    部分,并通过“启动/关闭”选项停止它。我已经做到了。我还尝试过停止并重新启动MySql服务。“如果您不使用小写字母表名设置,您可以在表名中使用大小写混合,而不会出现问题。”我无法添加名为
    活动的表。它将更改为
    活动
    。但我可以在我的列名中使用混合大小写。引用:“如果您不使用此小写字母表名称设置,您可以在表名称中使用混合大小写而不会出现问题。”Workbench绝对不允许我创建混合大小写表或模式名称。我不明白你为什么这么说。引用:“但是我现在有我的数据库和表名显示为大写字母。”你能解释一下你是怎么做到的吗?因为在上一句话中,您似乎在告诉人们不要使用
    小写字母表\u names=2
    。那么我们应该还是不应该?这是没有道理的。
     # If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.
     # If set to 2, table names are stored as given but compared in lowercase.