小编MDC*_*CCL的帖子

为什么 MySQL 不识别任何 sql_mode(s)?

尝试使用终端从终端启动 MySQL 时,mysql -u <username> -p<password>出现以下错误:

mysql: [错误] 未知变量 'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

在 MySQL 正在寻找 .cnf 文件(通过运行找到它们sudo /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options")的三个可能的位置中,只/etc/mysql/my.cnf存在。其中只有一个目录,包括!includedir /etc/mysql/conf.d/. 在那里,/etc/mysql/conf.d/mysql.cnf有以下几行:

 [mysql]
 sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Run Code Online (Sandbox Code Playgroud)

四处寻找答案,找不到任何答案。一一尝试从模式列表中排除特定的“坏模式”,它们都无法识别。

只有完全注释掉这一行,我才能登录并启动 MySQL。

有谁知道问题可能是什么?


平台和操作系统方面:

  • 我使用的 MySQL 版本是5.7.17
  • 操作系统为 Lubuntu 16.04,4.7.3-generic,x86_64

mysql mysql-5.7

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

DBCC CHECKTABLE 在空表上运行需要 15 分钟以上

我有一个数据库,其中 DBCC CHECKTABLE 在许多小表或空表上运行需要超过 15 分钟。当它完成时,没有失败或错误。服务器上其他所有内容的性能都处于非常可接受的状态。同时没有其他东西在运行。

我还尝试了 DBCC CLEANTABLE 并使用全扫描更新了统计信息。

我使用的是 SQL Server 2016 企业版 (13.0.5201.2)

示例表:

CREATE TABLE [Schema1].[Table1](
    [col1] [int] NOT NULL,
    [col2] [nvarchar](100) NOT NULL,
    [col3] [xml] NOT NULL,
 CONSTRAINT [PK_1] PRIMARY KEY CLUSTERED 
(
    [col1] ASC,
    [col2] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

sql-server dbcc sql-server-2016 dbcc-checktable

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

ERD 派生属性是否应包含在逻辑表中?

我已经创建了我的实体关系图(为简洁起见为 ERD)并且它具有派生属性。

当谈到使用关系模式进行数据库设计时,我已经设计了我的表并正确链接了所有内容。

我不知道是否应该在我的表中添加一个具有派生属性的列?例如,派生属性计算如下:

  • Total = Price * Quantity

它与以下说明性表架构有关:

Customer (
    ID, 
    CustomerName, 
    ItemsID, 
    Total
);
Run Code Online (Sandbox Code Playgroud)

应该Total包括在Customer表中吗?

erd database-design

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

不在表中的所有缺失订单号的列表

我们的工作场所已开始扫描所有文件,而不是手动将它们保存在档案等中。

平均而言,我们每次扫描 1,000 个文档(每天大约发生 30 次)。

每次我们扫描 1,000 个文档时,我们都会收到少量的 OCR 错误/警告。

是否可以将最低和最高顺序号提供给变量并让 SQL Server 输出不在最低和最高顺序号之间的表中的所有缺失顺序号的列表?

例如

OCROrderNo
---------------
9001
9002
9006
9007
9008
9009
Run Code Online (Sandbox Code Playgroud)

最低编号 9001,最高编号 9009

MissingOrderNos
--------------------
9003
9094
9005
Run Code Online (Sandbox Code Playgroud)

附加信息

根据答案,这就是我正在尝试的:

DECLARE @Start INT = 1497389
        , @End INT = 1498264

SELECT @Start + N - 1
FROM   dbo.Numbers
WHERE  N <= ( 1 + @End - @Start )
EXCEPT
SELECT [ORDERNUMBER]
FROM   [dwdata].[dbo].[ORDERS]
ORDER BY [ORDERNUMBER] DESC
Run Code Online (Sandbox Code Playgroud)

导致:

消息 207,级别 16,状态 1,第 10 行
无效的列名“ORDERNUMBER”。


如果语句包含 …

sql-server order-by except

6
推荐指数
1
解决办法
1015
查看次数

我应该在声明它的同一行中设置一个变量吗?

我经常看到语法

Declare @var int;
Set @var = 1;
Run Code Online (Sandbox Code Playgroud)

但是您可以在声明时设置变量

Declare @var int = 1;
Run Code Online (Sandbox Code Playgroud)

后一种选择有问题吗?我是否遗漏了一些内部的东西,或者在您不应该在声明中声明和设置变量的所有情况下都不起作用?

我问是因为我听到了我没想到的副标题。就像 Aaron Bertrand小写数据类型一样,msdn 也没有说明,但已在社区中找到。

sql-server t-sql

6
推荐指数
1
解决办法
209
查看次数

为什么不管精度如何,数据长度都是十进制 5?

我试图更好地理解 SQL 中的数字类型,并且读到十进制类型总是需要 17 个字节。但是,MS Docs列出了一个表格,指示使用的空间量取决于小数的精度。所以我尝试使用该datalength功能对其进行测试。

create table tbl_TestDec(dec1 decimal(19,4), dec2 decimal(20,4), dec3 decimal(9,4))

insert into tbl_TestDec
select 1, 1, 1

select datalength(dec1), datalength(dec2), datalength(dec3) from tbl_TestDec
Run Code Online (Sandbox Code Playgroud)

这输出:

5   5   5
Run Code Online (Sandbox Code Playgroud)

我期待9 13 517 17 17。我正在使用 SQL Server 2005。所有小数都是 vardecimal 还是我误解了 datalength 函数?

sql-server-2005 sql-server datatypes decimal

6
推荐指数
2
解决办法
909
查看次数

实体关系图和应用程序功能

我正在处理的应用程序的核心功能似乎只是关联实体。因此,一对多关系会产生“元数据”,这些“元数据”只会为我们的应用程序功能提供(以一种或另一种方式)关联实体。

现在我们有一个实体关系图 (ERD),它有很多一对多(超过 10 个表)和只有一个关联实体。它对该模型或应用程序有何看法?

是否可以改进,即,如果改进 ERD 以添加更多关联实体,应用程序是否可以绕过更多功能?

关联实体很少是否意味着应用程序的功能不会很丰富?

其他注意事项

我想知道的是:如果项目范围说明书导致 ERD 只有一个多对多关系和十几个一对多关系,那么这是否意味着该项目没有解决很多问题(功能)除了只数字化大量数据?

我认为,如果多对多较少,它们一开始只会镜像(除非我们为其他目的创建连接查询......)。

或者简单地说:大量的多对多关联是否意味着软件的功能将比少对多的软件更丰富(不要在这个想法中包括连接查询)?

erd database-design architecture application-design

6
推荐指数
1
解决办法
660
查看次数

我无法访问任何数据库图表

我的数据库在我的 Windows Server 2016 标准上运行良好。数据库管理系统为 Microsoft SQL Server 2017 Express。

今天我添加了一个新的表格和内容,一切都很好。我尝试打开数据库图并收到错误消息:

在此处输入图片说明

如果图像不起作用,消息是:

无法作为数据库主体执行,因为权限“dbo”不存在,无法模拟此类主体,或者您没有权限。(Microsoft SQL Server,错误:15517)

我的服务器上没有任何变化 - 没有更新等。

我可以访问所有表。当我查看我登录的帐户时,我可以看到我是数据库所有者,其他帖子建议这样做 - 但我以前并不确定为什么这会有所帮助。

这个问题会影响我拥有的每个数据库。

唯一的区别是我现在使用以下脚本从计划任务创建每日备份

BACKUP DATABASE DBName TO  DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\Backup\DBName .bak' 
WITH NOFORMAT, INIT,  NAME = N'DBName Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10
Run Code Online (Sandbox Code Playgroud)

的结果

SELECT ORIGINAL_LOGIN(), USER_NAME(), SUSER_SNAME();
Run Code Online (Sandbox Code Playgroud)

显示

在此处输入图片说明

sql-server sql-server-2017

6
推荐指数
1
解决办法
5678
查看次数

帮助解决 MySQL 的最大内存使用量过高的问题

任何人都可以帮我检查这个 MySQL 配置吗?我有一个 VPS 32GB RAM - 8 个 vcpu 并运行 1 个电子商务。

MySQLTuner 返回给我:

Variables to adjust:
  *** MySQL's maximum memory usage is dangerously high ***
  *** Add RAM before increasing MySQL buffer variables ***
    join_buffer_size (> 140.0M, or always use indexes with JOINs)
    tmp_table_size (> 32M)
    max_heap_table_size (> 32M)
    table_open_cache (> 407)
Run Code Online (Sandbox Code Playgroud)

my.cnf设置为:

key_buffer_size = 256M
join_buffer_size = 140M
tmp_table_size   = 80M
max_heap_table_size = 80M
thread_pool_size = 24
innodb_buffer_pool_instances = 6
innodb_buffer_pool_size = 6G
innodb_log_file_size = 768M …
Run Code Online (Sandbox Code Playgroud)

mysql mysqltuner

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

在 ChineseTaiwan Collat​​ion 中,VARCHAR 内存缓冲区似乎正在中断

我很难用英语写一些东西。我希望你明白。我使用了翻译器并对其进行了审查。

我创建了两个临时数据库。排序规则分别是“Korea_Wansung_CI_AS”和“Chinese_Taiwan_Stroke_CI_AS”。

我创建了一个带有类型列的临时表,VARCHAR(2048)我刚刚在INSERT这里创建了一个用于此表数据的过程。

当从使用 c++ oledb 的服务器调用存储过程时,该VARCHAR值被加密并作为 UTF-8 发送。

我们发送

  • '???' -> 'Korean_Wansung'¨
  • “??????” -> 'Chinese_Taiwan'。

我已经通过调试验证该值是使用普通 UTF-8 加密的。

  • '???' -> UTF-8 -> '\xed\x95\x9c\xea\xb5\xad\xec\x96\xb4'

  • “??????” -> UTF-8 -> '\xe9\x9f\x93\xe5\x9c\x8b\xe4\xba\xba\xe5\xad\xb8\xe5\x8f\xb0'

在这里,我有一个问题。

当通过数据库中的SELECT语句回读该表时,我们发现对于Korean_Wansung,字符串'matched by the Code Page 949' 正常出现。

但不适用于Chinese_Taiwan。存储在内存中的值本身似乎已损坏。

如果您从服务器获取该值并对其进行解码,那么对于 Korean_Wansung 而言,原始字符将显示为正常字符。

但是在中国的情况下,它不会正常出来。

我需要你的帮助。

如果您需要更多信息,我们会迅速回复您并上传。

谢谢你。

sql-server collation

6
推荐指数
2
解决办法
166
查看次数