Tag Archives: mysql

EF Core with MySQL Specified key was too long; max key length is 3072 bytes



今日嘗試使用 EF Core with MySQL 時出現了以下的錯誤信息:

MySql.Data.MySqlClient.MySqlException
HResult=0x80004005
Message=Specified key was too long; max key length is 3072 bytes
Source=MySql.Data
StackTrace:
at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary
2 parameterValues) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary2 parameterValues)
at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary
2 parameterValues) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable1 migrationCommands, IRelationalConnection connection)
at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.CreateTables()
at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureCreated()
at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreated()
at epm.Api.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, ApplicationDbContext dbContext) in C:\Users\yauch\Documents\git\docker-easy-property\api\src\server\epm.Api\Startup.cs:line 65

我是使了了Official 的 NuGet PackageMySql.Data.EntityFrameworkCore  “
做了一會research 之後發現… 是這一個package 的問題
解決方法十分簡單.. 我們只需要用另一個 nuget package 便可”Pomelo.EntityFrameworkCore.MySql
https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySql

Hope you find it useful



EntityFramework with MySQL DateTime Issue – Unable to convert MySQL date/time value to System.DateTime

很多時候都會在Database Table上建立一個有 DateTime Field用來記錄資料修改時間

現在幫另一間公司寫的 ASP.Net MVC With Entity FrameworkWeb Application
為了減低成本.. 這個Project 選用了MySQL
使用Entity Framework 使用MySQL 真是一個挑戰。。
有些的功能沒有直接的 inplementation
所以久不久便會遇到問題

今次遇到的錯誤信息如下
An exception of type ‘MySql.Data.Types.MySqlConversionException’ occurred in MySql.Data.dll but was not handled in user Code

Additional information: Unable to convert MySQL date/time value to System.DateTime
Unable to convert MySQL date/time value to System.DateTime


主要是當我嘗試load data時出現..
解決方法 十分簡單
我𠍒只需要在Web.config connection string上加上以下的設定便可以了

Convert Zero Datetime=true

E.g.
<add name=”ProjectTrackerContext”
connectionString=”Database=docker_dev;Data Source=192.168.99.100;User Id=root;Password=password;Convert Zero Datetime=true
providerName=”MySql.Data.MySqlClient” />

Hope you find it useful

Linux Notes – How to install MySQL on Ubuntu – 如何在Ubuntu 上安裝 MySQL

最近常常在練習安裝/設定 Ubuntu Linux
用作Host Web ApplicationWeb Server.
很多時候都會用以下是Ubuntu 安裝 MySQL Server 的Command

sudo apt-get update
sudo apt-get install mysql-server
sudo mysql_secure_installation
sudo mysql_install_db

安裝完成後可以執行以下的指令去進階設定MySQL 令他更安全

sudo mysql_secure_installation

Hope you find it useful

Azure failed with message: User has exceeded the ‘max_user_connections’ resource (current value: 4)

最近和朋友做一個 ASP.Net MVCFreelance Project
因為生活習慣不同..所以我們都是不同時間寫Code的
但是一起用同一個 Azure Free Tier的 MySQL Server
沒有很大的問題
但是當我們嘗試Merge我們的Project 做 Testing時候便出現了以下的錯誤信息
User has exceeded the ‘max_user_connections’ resource (current value: 4)
Azure has exceeded the 'max_user_connections' resource (current value: 4)


原來 Free Tier的 MySQL 是限制了 可以Connect到這個MySQL Database的 可以有4個 Connection
所以最後還是開始學習使用Docker 做我們的Development Database

當做Demo時才使用Azure 的Free Tier MySQL

php convert dd/mm/yyyy to mysql datetime format – PHP 把 dd/mm/yyyy 轉換成 MySQL可用的格式

今天使用PHP 來把一些 XML Data 加入 MySQL 時出現了一些問題
原因是那些 XMLDate Formatdd/mm/yyyy 不能直接轉換成 MySQLDateTime Format

MySQLFormat要是 yyyy/mm/dd
做了一會research 之後終於找到解決方法了

PHP 轉換Date Format的功能是
DateTime::createFromFormat(‘Input Date Format’, $startDate)->format(‘Y-m-d’);

  $startDate = '25/12/2015';
  $startDate = DateTime::createFromFormat('d/m/Y', $startDate)->format('Y-m-d');

Happy Coding