相关疑难解决方法(0)

在DB中存储图像 - 是还是不?

所以我正在使用一个将图像存储在数据库中的应用程序.你对此有何看法?我更像是一种在文件系统中存储位置的类型,而不是直接将它存储在数据库中.

您认为利弊是什么?

database theory storage blob image

415
推荐指数
25
解决办法
59万
查看次数

为什么varbinary而不是varchar

可能重复:
在这里使用varbinary over varchar有什么好处?

请看一下这张表:

http://www.mediawiki.org/wiki/Manual:Logging_table

正如你可以看到维基百科使用varbinary而不是varchar:

| log_type      | **varbinary**(32)       | NO   | MUL |                |
| log_action    | **varbinary**(32)       | NO   |     |                |
| log_timestamp | **binary**(14)          | NO   | MUL | 19700101000000 |
| log_user      | int(10) unsigned        | NO   | MUL | 0              |  
| log_user_text | **varbinary**(255)      |      |     |                |
Run Code Online (Sandbox Code Playgroud)

所有这些信息都是文本,为什么他们将它们保存为二进制?

他们为所有表格执行此操作.

mysql sql database sql-server database-design

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

为什么在将二进制数据从PHP插入MySQL时使用bin2hex?

我听说有传言说在将二进制数据(文件等)插入MySQL时,你应该使用该bin2hex()函数并将其作为HEX编码值发送,而不是仅仅使用mysql_real_escape_string二进制字符串并使用它.

// That you should do
$hex = bin2hex($raw_bin);
$sql = "INSERT INTO `table`(`file`) VALUES (X'{$hex}')";

// Rather than
$bin = mysql_real_escape_string($raw_bin);
$sql = "INSERT INTO `table`(`file`) VALUES ('{$bin}')";
Run Code Online (Sandbox Code Playgroud)

据说这是出于性能原因.与MySQL如何处理大字符串以及如何处理HEX编码值有关

但是,我很难确认这一点.我所有的测试都表明确切的对话; 该bin2hex方法慢了约85%,使用了大约24%的内存.
(我在PHP 5.3,MySQL 5.1,Win7 x64上测试它 - 使用一个简单的插入循环.)

例如,此图显示了测试代码运行时mysqld进程的私有内存使用情况:

mysqld进程使用的私有字节http://atli.advefir.com/images/priv_mem_cropped.gif

有没有人有解释这个的解释或资源?

谢谢.

php mysql binary insert

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

在mysql中存储二进制数据

我在本地计算机上有一个PDF文件.我想将此文件上传到SQL数据库上的BINARY BLOB.这里提到的其他方法[ MySQL中的二进制数据都使用PHP.我想要一个简单干净的方法来在Linux命令行上传这个PDF文件.不幸的是,我无法访问远程文件系统,因此无法像其他地方那样只存储文件的链接......我需要将这个MySQL数据库用作这些PDF文件的虚拟文件系统.

从PhP示例中,似乎所有需要的是在使用INSERT命令之前转义斜杠?有一种简单的方法可以在Linux命令行上实现吗?

mysql sql linux blob

5
推荐指数
1
解决办法
8066
查看次数

如何在AES数据库中存储AES加密信息

我有一条信息,使用aes-256-cbc加密编码.我该如何将其存储在数据库中?目前我正在使用VARCHAR(255)utf8_bin.这样可以,还是应该使用其他字段类型,如VARBINARY(255)?在这种情况下,是否有可能使用VARCHAR丢失一些数据?谢谢.

mysql encryption aes

5
推荐指数
1
解决办法
3622
查看次数

MySQL表中的64位密码哈希值

我用这个函数来哈希我的密码:

// RETURNS: rAyZOnlNBxO2WA53z2rAtFlhdS+M7kec9hskSCpeL6j+WwcuUvfFbpFJUtHvv7ji   
base64_encode(hash_hmac('sha384', $str . SC_NONCE, SC_SITEKEY, true));
Run Code Online (Sandbox Code Playgroud)

我在char(64)字段(MySQL -InnoDB)中存储哈希值.

我应该使用varchar(64)而不是char(64)吗?为什么?

编辑: 我用sha384更改了sha256.因为在这个例子中,sha256总是为我返回44个字节.抱歉令人困惑.现在它是64字节.

php mysql hash database-schema

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

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