通常,使用mysqldump导出一般用这样的方式:

mysqldump -u root -p --no-data [db-name] > [filename.sql]

但如果在Windows环境下,不管是CMD还是PowerShell,使用这个命令都会有问题,因为这样导出的sql文件,在Linux环境下会报错:

ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected.

这里显然是由于Windows环境下的编码方式和Linux不同导致。

-- 阅读剩余部分 --

  • This is PascalCase: SomeVariableName
  • This is camelCase: someVariableName
  • This is snake_case: some_variable_name
  • This is kebab-case: some-variable-name

最近研究了不少小型电商网站,背后的技术都是大众化的程序,什么shopify,magento,opencart,drupal,wordpress,joomla什么的,反正没什么看着多高深的东西。

美国尊重知识产权是OK的,那么,这些现成的程序都是啥呢?给哪些要么懒,要么蠢的半吊子程序员做二次开发用的,美其名曰提高开发效率。毕竟美国程序员公司贵啊。

-- 阅读剩余部分 --

一句话总结:不要用utf8mb4_general_ci了,而要用utf8mb4_unicode_ci

原文链接:https://stackoverflow.com/questions/766809/whats-the-difference-between-utf8-general-ci-and-utf8-unicode-ci

首先,用uft8mb4而不要用utf8,这是肯定的,因为uft8mb4可以存储emoji

其次,精确性来说,utf8mb4_unicode_ci使用Unicode来进行比对和排序,在很多语言中更精确(毕竟 是Unicode)。

utf8mb4_general_ci fails to implement all of the Unicode sorting rules, which will result in undesirable sorting in some situations, such as when using particular languages or characters.

第三,性能。

-- 阅读剩余部分 --

最近遇到一个问题,在一个transaction里,会遇到保存不成功,但transaction不回滚的问题。

我还以为是Yii的问题,后来才发现是自己对try catch的理解不到位。

transaction是要进行try catch的,如果try block里数据库保存失败,例如$user->save()或者$order->save()不成功,返回值false,但也仅此而已了,不抛出异常,因此transactiontry block中捕获不到Exception,自然就不回滚。

-- 阅读剩余部分 --