标签: mariadb

MariaDB动态列和JSON?

我试图在一个列中存储JSON数据(几乎是PHP中可能是未知长度的数组),这将允许我对其进行查询.我们以此为例......

假设我有一个字段询问你喜欢什么样的运动(这是一个复选框).

[] Soccer
[] Hockey
[] Football
[] Swimming
Run Code Online (Sandbox Code Playgroud)

然后将通过sports[]数组发送到PHP.然后我想把它拿到我的数据库中,看起来像

|sports|{hockey:false,swimming:true,football:false,soccer:true}|
Run Code Online (Sandbox Code Playgroud)

或类似的东西,然后我可以去

SELECT COUNT(*) FROM fields WHERE hockey = "false";
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何正确地做到这一点,忽略这个"例子"实际上很容易通过加入我希望使用mariadb动态列来做的事实(至少我相信这就是我想要的).我知道我可以用Postgre做到这一点.

database json mariadb

7
推荐指数
1
解决办法
6218
查看次数

MySQL挂在ALTER TABLE上

我不太大的表挂在ALTER命令上.会是什么呢?

只有150k行,42个字段总共142 MB.InnoDB存储引擎和服务器版本:5.5.44-MariaDB MariaDB Server.1个字段'slotindex'是主键:bigint(20)和BTREE类型.

命令:

    MariaDB [mydb]> ALTER TABLE `runs` CHANGE `p_w_trans_x` `p_w_tran_x` FLOAT NOT NULL;
    Stage: 1 of 2 'copy to tmp table'   65.7% of stage done
    Stage: 2 of 2 'Enabling keys'      0% of stage done
Run Code Online (Sandbox Code Playgroud)

在这个阶段2将永远完全挂起.

进程列表如下:

MariaDB [(none)]> show full processlist;
+--------+------+-----------------+-----------+---------+-------+---------------------------------+---------------------------------------------------------------------+----------+
| Id     | User | Host            | db        | Command | Time  | State                           | Info                                                                | Progress |
+--------+------+-----------------+-----------+---------+-------+---------------------------------+---------------------------------------------------------------------+----------+
| 274226 | root | localhost:45423 | edc_proxy | Sleep   | 16043 | …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb

7
推荐指数
1
解决办法
4117
查看次数

如何更新xampp中的mysql版本(innodb_additional_mem_pool_size错误)

我正试着upgrade mysql进去xamp.我正在使用laravel哪个需要mariaDB v10.2.2.所以我latest msi package从中下载了mariaDB website.现在我按照以下几点安装相同的内容:

  • 将MySQL安装到C:\ TEMP.
  • 将旧安装文件夹设置为mysql_old.
  • 将以下文件夹"bin,include,lib,share,support-files"复制到xamp\mysql \文件夹.我没有复制数据文件夹
  • 将my.ini文件从旧安装复制到xamp\mysql\bin \文件夹中的新安装
  • 将旧数据文件夹复制到新的mysql文件夹

在这之后我尝试从控制面板启动mysql并显示以下错误:

XAMP控制面板错误截图

现在,在检查错误日志时,我发现了这个:

2017-02-25 12:31:56 5736 [Note] InnoDB: Mutexes and rw_locks use Windows interlocked functions
2017-02-25 12:31:56 5736 [Note] InnoDB: Uses event mutexes
2017-02-25 12:31:56 5736 [Note] InnoDB: Compressed tables use zlib 1.2.3
2017-02-25 12:31:56 5736 [Note] InnoDB: Number of pools: 1
2017-02-25 12:31:56 5736 [Note] InnoDB: Using generic crc32 instructions
2017-02-25 12:31:56 5736 …
Run Code Online (Sandbox Code Playgroud)

mysql xampp upgrade mariadb mysqlupgrade

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

如何防止MariaDB中导入的表中的重复ID?

(在那之前,我为我糟糕的英语道歉)我有这样的研究案例:

我目前在使用Web应用程序时出现问题.我为某个公司制作了一个Web应用程序.我使用CodeIgniter 3制作了应用程序.

我使用Maria DB构建了数据库.对于每个表中的id,我使用每个表的应用程序数据库的自动增量ID.我通常将Web应用程序部署到云服务器(有时公司有自己的专用服务器,但有时却没有).有一天,有一家公司,他们不想将我之前制作的应用程序部署到云端(出于安全目的,他们说).

该公司希望将该应用程序部署到员工的个人电脑上,而每个员工的电脑不相互连接(即独立的个人电脑/个人电脑/员工的笔记本电脑).他们说,他们会每5个月将员工个人电脑的所有数据收集到公司的数据中心,当然数据中心也没有连接到互联网.我告诉他们这不是存储数据的好方法.(因为当我尝试将所有数据合并为一个数据时,数据将重复,因为我的每个表的列ID都是自动增量ID,并且它是主键).不幸的是,该公司仍然希望以这种方式保留应用程序,我不知道如何解决这个问题.

他们至少有10名员工会使用这个网络应用程序.据此,我必须亲自将应用程序部署到10台PC上.

附加信息:每个员工都有自己从公司获得的唯一ID,我为每个员工创建了auto_increment id,如下表所示:

id   |  employee_id  | employee_name   |
1    | 156901010     |  emp1
2    | 156901039     |  emp2
3    | 156901019     |  emp3
4    | 156901015     |  emp4
5    | 156901009     |  emp5
6    | 156901038     |  emp6
Run Code Online (Sandbox Code Playgroud)

问题是每当他们从该应用程序填充表单时,某些表不存储员工的id,而是存储来自增量id的新id.

例如electronic_parts表格.它们具有如下属性:

| id  |  electronic_part_name  |  kind_of_electronic_part_id  |
Run Code Online (Sandbox Code Playgroud)

如果emp1从Web应用程序填写表单,表格的内容将在下面.

| id  |  electronic_part_name  |  kind_of_electronic_part_id  |
|  1  |   switch               |           1 …
Run Code Online (Sandbox Code Playgroud)

database codeigniter duplicates auto-increment mariadb

7
推荐指数
1
解决办法
369
查看次数

使用ODBC读取整个LOB的最佳方法是什么?

读一个你事先不知道它的大小的LOB(没有最大分配+副本)应该是一个相当普遍的问题,但找到好的文档和/或以"正确"方式做这个的例子已经证明是非常令人抓狂的我.

我挣扎SQLBindCol但是看不出任何有效的方法. SQLDescribeColSQLColAttribute返回列元数据,这些元数据似乎是列大小的默认值或上限,而不是当前LOB的实际大小.最后,我决定使用以下内容:

1)将任何/所有LOB列作为SELECT语句中编号最高的列

2)SQLPrepare声明

3)SQLBindCol您想要的任何早期非LOB列

4)SQLExecute声明

5)SQLFetch结果行

6)SQLGetData在LOB列上使用大小为0的缓冲区来查询其实际大小

7)分配一个足够大的缓冲区来容纳你的LOB

8)SQLGetData这次再次在你的LOB列上使用正确大小的分配缓冲区

9)对每个后面的LOB列重复步骤6-8

10)对结果集中的更多行重复步骤5-9

11)SQLCloseCursor完成结果集后

这似乎对我有用,但似乎也很有帮助.

对SQLGetData的调用是返回服务器还是仅处理已发送到客户端的结果?

是否存在服务器和/或客户端拒绝以这种方式处理非常大的对象的问题(例如 - 超出某个大小阈值,因此它们会生成错误)?

最重要的是,有更好的方法吗?

谢谢!

mysql odbc mariadb

7
推荐指数
1
解决办法
218
查看次数

MySQL错误1064语法,但一切似乎都很好

我正在使用xampp控制面板,然后从那里开始apache和mysql的过程。然后我转到mysql工作台,服务器状态似乎正常,这是一些信息

Host: Windows-PC
Socket: C:/xampp/mysql/mysql.sock
Port: 3306
Version 10.1.31-MariaDB mariadb.org binary distribution
Compiled For: Win32(32)
Configuratin File: unknown
Run Code Online (Sandbox Code Playgroud)

然后每次当我尝试为我的虚拟架构添加外键时:

 ALTER TABLE `puppies`.`animals` 
 ADD INDEX `Breed_idx` (`BreedID` ASC) VISIBLE;
 ;
 ALTER TABLE `puppies`.`animals` 
 ADD CONSTRAINT `Breed`
 FOREIGN KEY (`BreedID`)
 REFERENCES `puppies`.`breeds` (`Breed`)
 ON DELETE NO ACTION
 ON UPDATE NO ACTION;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

 ERROR 1064: You have an error in your SQL syntax; check the manual that 
 corresponds to your MariaDB server version for the right syntax to use near 
 '' at line …
Run Code Online (Sandbox Code Playgroud)

mysql xampp mariadb

7
推荐指数
3
解决办法
9438
查看次数

授予 mariadb 用户创建数据库权限

我知道在数据库管理中,使用 root 用户是一种不好的行为,我正在设置一个具有基本权限的自定义用户(创建数据库、删除数据库、对所有新创建的数据库的所有访问权限等)。
我已经创建了一个用户,antoine该用户应该是用于登录mariadb server.

问题是,我不知道如何授予管理权限,例如create database xxxdrop database xxx等等...文档解释说要授予权限,您可以运行以下命令:

GRANT role ON database.table TO user@host
Run Code Online (Sandbox Code Playgroud)

但是,当涉及到服务器权限时,我该怎么办呢?我已经尝试过*.*database.table它不起作用。

mysql database privileges mariadb

7
推荐指数
2
解决办法
7466
查看次数

通过 SSH 隧道的 DBeaver 连接

使用 DBeaver,我尝试连接到安装了 MariaDB 数据库的 AWS ec2 实例。

我创建了一个新连接:

  • 连接:AWS / Maria DB
  • 服务器主机:localhost(因为我使用 ssh 进行连接)
  • 数据库、用户名和密码:正确的
  • 端口:3306

连接上的 SSH 隧道:

  • 使用 SSH 隧道:选中
  • 主机/IP、端口和用户:按照 AWS 文档的建议
  • 授权:公钥
  • 私钥:文件 .pem(我也用它从命令行通过 ssh 连接)

连接一开始效果很好。几分钟不活动后,如果我打开表,连接就会卡住,我需要无效/重新连接才能获取数据。这个过程有时是由 DBeaver 在 15 秒未获取任何内容后完成的,但有时即使我等待 2 分钟,它也会继续运行,但什么也没有获取。

我的配置中是否缺少某些内容?或者服务器上的一些配置也许..我不知道..

你有遇到过这个问题吗?

ssh amazon-ec2 mariadb ssh-tunnel dbeaver

7
推荐指数
1
解决办法
8246
查看次数

计算 MySQL 中列的简单中位数

我正在努力寻找一个简单的中值问题的解决方案。my_table给定一个只有一列的表:

my_column | 
----------|
10        |
20        |
30        |
40        |
50        |
60        |
Run Code Online (Sandbox Code Playgroud)

如何调用函数返回中位数 35?

当我只想返回中值时,我不知道如何使此语法起作用:

SELECT
  PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY my_column) OVER ( PARTITION BY my_column)
FROM
  my_table
Run Code Online (Sandbox Code Playgroud)

mysql sql median common-table-expression mariadb

7
推荐指数
2
解决办法
7616
查看次数

Mariadb 在没有用户名的情况下中止连接错误

在 MariaDB 中,我在错误日志中收到此警告。有没有办法在不知道用户名的情况下解决问题?

[Warning] Aborted connection 1101 to db: 'unconnected' user: 'unauthenticated' host: '127.0.0.1' (This connection closed normally without authentication)
Run Code Online (Sandbox Code Playgroud)

mysql mariadb sql-grant

7
推荐指数
1
解决办法
1万
查看次数