标签: mysql-5.6

如何从 json_extract 不可用的 MySQL 5.6 中的 JSON 字段中进行选择?

如果我的行具有varchar以下值:“ [1,2,3]”,如果我需要该值包含数字之一(2 或 3),我该如何选择整行?

mysql mysql-5.6

4
推荐指数
1
解决办法
5520
查看次数

MySQL 5.6 - DENSE_RANK 类似功能,没有 Order By

我有一张这样的表:

+------+-----------+
|caseID|groupVarian|
+------+-----------+
|1     |A,B,C,D,E  |
+------+-----------+
|2     |A,B,N,O,P  |
+------+-----------+
|3     |A,B,N,O,P  |
+------+-----------+
|4     |A,B,C,D,F  |
+------+-----------+
|5     |A,B,C,D,E  |
+------+-----------+
Run Code Online (Sandbox Code Playgroud)

我想获得一个新列nameVarian,以便相同的groupVarian值具有相同的排名nameVarian(例如:v1、v2 等)。但是,nameVarian分配给特定对象的值groupVarian应按照 的顺序caseID(按照它们出现在表中的顺序)。

输出应该是这样的:

+------+-----------+----------+
|caseID|groupVarian|namevarian
+------+-----------+----------+
|1     |A,B,C,D,E  |v1        |
+------+-----------+----------+
|2     |A,B,N,O,P  |v2        |
+------+-----------+----------+
|3     |A,B,N,O,P  |v2        |
+------+-----------+----------+
|4     |A,B,C,D,F  |v3        |
+------+-----------+----------+
|5     |A,B,C,D,E  |v1        |
+------+-----------+----------+
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-5.6

4
推荐指数
1
解决办法
3783
查看次数

在 Ubuntu 20.04 上安装 MySQL 5.6

我有一个需要 MySql 5.6 的自定义应用程序。我能够使用本教程在 ubuntu 20.04 上安装 MySql 5.7:https : //askubuntu.com/a/1232993

如何在 ubuntu 20.04 上安装 MySql 5.6?

因为上面的教程只适用于MySql 5.7,我在网上没有找到任何可行的解决方案。

MySql 5.6 可以在 Ubuntu 20.04 上运行吗?我应该将操作系统降级到 Ubuntu 18.04 吗?

mysql linux ubuntu mysql-5.6 ubuntu-20.04

4
推荐指数
2
解决办法
2万
查看次数

突然无法转储远程数据库:“字段列表”中的未知列“生成表达式”

我一直能够使用mariadb-dumpCLI 转储远程数据库。从今天开始,突然出现以下错误

mysqldump: Couldn't execute 
'select column_name, extra, generation_expression, data_type 
from information_schema.columns 
where table_schema=database() 
and table_name='<my-table>'': 
Unknown column 'generation_expression' in 'field list' (1054)
Run Code Online (Sandbox Code Playgroud)

我检查了服务器信息架构,确实generation_expression缺少该列。它存在于我打算转储到的本地测试服务器上。mariadb-dump 版本为 Ver 10.19 Distrib 10.11.2-MariaDB,适用于 Linux (x86_64),服务器版本为 MySQL 5.6。

我在互联网或 stackoverflow 上找不到任何相关问题。我查了一下,好像generation_expression是5.7版本才引入的。我无法将服务器升级到 5.7。我希望这不是必需的,转储工具以前一直工作得很好。我正在考虑完全重新安装 mariadb,但这需要花费大量时间和精力,并且可能无法解决问题。

编辑:我刚刚重新安装了数据库服务器并清理了所有数据(首先备份),但仍然遇到相同的错误。

mysql dump mariadb mysql-5.6

4
推荐指数
1
解决办法
2301
查看次数

连接速度非常慢(1 秒)

我在 Windows 7 上运行 MySQL 5.6(64 位)。我正在 32 位 Windows 7 上测试最近从 MySQL 5.0 升级的数据库。(我还复制了 my.ini,做了一些更改)

我发现建立连接需要很长时间(大约 1 秒)。作为示例,我创建了一个非常简单的 SQL 脚本:

select 1 as n;
Run Code Online (Sandbox Code Playgroud)

然后我在批处理文件中运行了 10 次,花了 10 秒才能完成:

mysql -h localhost -u root -D myschema 0< myscript.sql
Run Code Online (Sandbox Code Playgroud)

(是的,这里没有密码,这是一个仅监听127.0.0.1的测试DB)

有人知道为什么这么慢吗?(参见下面的 my.ini)

[client]
port=3306
[mysql]
default-character-set=latin1
[mysqld]
port=3306
bind-address=127.0.0.1
basedir="C:/Program Files/MySQL/mysql-5.6.10-winx64/"
datadir=C:/DATA
character-set-server=latin1
default-storage-engine=myisam
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
query_cache_size=0
table_open_cache=256
tmp_table_size=18M
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=35M
key_buffer_size=25M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=47M
innodb_log_file_size=24M
innodb_thread_concurrency=8
log-bin=c:/data/mysql/binarylog
max_binlog_size=1024M
enable-named-pipe
slow_query_log=
expire_logs_days=90
Run Code Online (Sandbox Code Playgroud)

mysql connection 64-bit myisam mysql-5.6

3
推荐指数
1
解决办法
6626
查看次数

设置MySQL主 - 主复制

我目前有一个主服务器,并希望添加另一个主服务器进行故障转移.

在主服务器上,我已将以下内容添加到"my.ini"

server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=1
binlog_do_db=2
binlog_do_db=3
binlog_do_db=4
Run Code Online (Sandbox Code Playgroud)

添加后:

master-host = [IP]
master-user = [usernameslaveuser]
master-password = [password]
master-connect-retry = 30
Run Code Online (Sandbox Code Playgroud)

mysql服务器不再启动...所以我决定先让辅助服务器正常工作.

问题2:在新服务器上,我从主数据库的"data"/ mysql目录复制了我的用户文件.我还用MySQL工作台导入了所有数据库.

然后我把它添加到"my.ini":

server-id=2
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2

master-host = [IP]
master-user = [usernameslaveuser]
master-password = [password]
master-connect-retry = 30
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=1
binlog_do_db=2
binlog_do_db=3
binlog_do_db=4
Run Code Online (Sandbox Code Playgroud)

服务器启动正常,所以我决定在主服务器上的复制数据库中添加一个表,但是没有复制到辅助服务器的更改...

我google了一下,发现我必须在mysql命令行中运行一些命令才能使复制工作.但是,当我在辅助服务器上打开它时,它无法启动...在命令提示符下打开它时,它显示mysql.exe:未知变量'server-id = 2"

两台服务器都运行Windows Server 2012 R2并安装了MySQL 5.6.15 64位.有人可以指导我真实的最后一部分设置吗?

mysql replication database-replication mysql-5.6

3
推荐指数
1
解决办法
9157
查看次数

MySQL 5.6.19 TIMESTAMP 不能接受很多正确的值

我遇到了一个非常奇怪的问题,不明白这一点。

CREATE TABLE test (time TIMESTAMP NOT NULL DEFAULT NOW()) ENGINE=INNODB;

mysql> insert into test (time) values("2011-03-13 01:08:04");
Query OK, 1 row affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

这很好。现在,仅将时间更改 1 小时:

mysql> insert into test (time) values("2011-03-13 02:08:04");
ERROR 1292 (22007): Incorrect datetime value: '2011-03-13 02:08:04' for column 'time' at row 1
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我随机插入日期时间值并发现许多值无法插入:“2011-03-13 02:08:04”、“2010-03-14 02:04:05”、“2009-03-08 02” :24:52", "2009-03-08 02:48:27", "2011-03-13 02:06:01", "2005-04-03 02:00:44"...

将小时更改为 1 或将年份更改为 1 可以解决问题,但当然不是真正的解决方法。

mysql datetime timestamp mysql-5.6

3
推荐指数
1
解决办法
1822
查看次数

为什么我不能永久更改 sql_mode?

我目前在 Windows 10 中使用 mysql 服务器 5.6。在使用 mysql 时,不断出现错误,类似于“以下列没有默认值”我在互联网上读到,如果我更改,我可以解决此问题sql_模式。目前设置为

 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Run Code Online (Sandbox Code Playgroud)

我从“mysql server 5.6”文件夹中的“my-default.ini”文件中获取了它。我读到的其他几个答案说,如果您想永久更改 sql_mode,您应该通过“my-default.ini”文件来完成。所以我所做的是,我以管理员身份运行记事本,然后浏览打开“my-default.ini”文件,该文件位于:

  c:\programs files (x86)\mysql\mysql server 5.6\my-default.ini
Run Code Online (Sandbox Code Playgroud)

当我打开文件时,我修改了最后一行:

  sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Run Code Online (Sandbox Code Playgroud)

  sql_mode=
Run Code Online (Sandbox Code Playgroud)

然后我保存了文件,关闭了它。然后通过使用任务管理器我重新启动了我的sql服务器:

  task manager >> services >> mysql56
Run Code Online (Sandbox Code Playgroud)

这是应该永久修改我的sql_mode的整个过程。当我查看“my-default.ini”文件时,最后一行仍然被修改。但是如果我通过命令行登录mysql并使用以下代码查看我的sql_mode:

  select @@sql_mode;
Run Code Online (Sandbox Code Playgroud)

我知道我的 sql_mode 是

  STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Run Code Online (Sandbox Code Playgroud)

我希望所有这些都被(永久)删除,以便我的错误消失。如果我尝试使用以下命令从命令行修改 sql_mode:

  set @@global.sql_mode="";
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我重新启动 MySQL 时,一切都恢复到以前的样子。

有人可以告诉我我做错了什么吗?以及是否有其他方法可以解决这个问题。

mysql command-line sql-mode mysql-5.6

3
推荐指数
1
解决办法
7277
查看次数

Docker-MySQL5.6 未知变量lower_case_table_names=1

我想 在 MySQL 5.6 docker 容器中将变量lower_case_table_names设置为 1。

我把变量放在容器中/etc/mysql下的my.cnf文件[mysqld]中。

停止容器后,它没有开始出现此错误:

未知变量lower_case_table_names=1

所以我要问的是还有其他方法可以将此变量设置为 1 吗?

global-variables docker mysql-5.6

3
推荐指数
1
解决办法
3318
查看次数

MySQL 5.6 中生成列的替代方法是什么

我有一个 MySQL alter 语句

ALTER TABLE `employee`
ADD `employee_name_generator` CHAR(20) GENERATED ALWAYS AS
    (COALESCE(concat(`employee_name`), '^')) VIRTUAL;
Run Code Online (Sandbox Code Playgroud)

这是添加employee_name_generator唯一约束所必需的。这在 MySQL 5.7 以后工作正常。但是我需要它的环境有 MySQL 5.6。MySQL 5.6 有替代品吗?

mysql sql database mysql-5.6 virtual-column

3
推荐指数
1
解决办法
2273
查看次数