【保存版】2013年度発売全パチスロアプリ一覧(iPhone,iPad)

【Access】MySQLのフロントエンドをAccessにした場合はテーブルの型・値に注意。

現在、データベースにMySQLを使用したサイトを作成しています。
データの初期登録用にAccessでODBCリンクテーブルを作成し、
データを更新しようとしたところ、
「ロックされています。」「競合しています。」
のようなエラーメッセージが表示され更新できませんでした。

accessmysql_データの競合メッセージ
(エラーメッセージ)
「このレコードは他のユーザーによって変更されています。
レコードの保存を選択すると、他のユーザーによる変更を無視し、
自分が行った変更を反映します。」

DBへの接続及びテーブルの参照はできますが、
更新・削除ができません。なんでだろう?

環境は以下のとおり。
【サーバー側】
WindosでXAMPで一式をインストールしています。
・MySQL(5.5.16)

【クライアント側】
・Access2003 SP3 MDB
・ODBCドライバ(MySQL ODBC 5.1)

環境回りについては今回新規作成したものではなく、以前のサイト作成時に
使用したもので問題なくリンクテーブルにて更新ができていたものでした。

何か設定漏れがあるのかと思って設定を再確認したのですが、
特に問題は見つかりません。

ユーザー権限も問題なし、テーブルにも主キーは存在します。
ネット上の情報では、
MySQL(ODBC接続)のリンクテーブルのデータの競合について
が、私と同様の現象のようですが、解決には至っていないようです。

そこで、MySQL側の今回のDBにシンプルな1項目だけのテーブルを
作成してみました。
そして、AccessMDBからデータの編集を試してみます。
するとなんと、問題なく更新できるではありませんか!

データ更新できないのは、テーブルに問題があるようです。

そこで編集できなったテーブルから項目を一つづつ減らしながら
どの項目に問題があるのかをチェックしていきます。
すると、ある項目を削除すると問題なく編集できるようになりました。

Access側でテーブル値更新時にエラーとなった場合、
「競合エラー」が表示されますが、これは競合だけではなく、
値エラーの場合も同様のエラーメッセージが表示されるようです。

ポイントはMySQLの型定義とAccess側での型の認識が
微妙に違い、MySQLで許容されるものが必ずしもAccess側で
許容されない。ということ。

あー、よかった。これでAccess側から更新できます。

今回は、Accessが返すエラーメッセージがおかしかったので
原因を調査するのに手間取りました。

MySQLとAccessの組み合わせでデータ更新ができないという人、
一度、MySQL側のテーブルの型と値をチェックしてみると
よいかと思います。

【参考:過去のMySQL-Access関連エントリ】
【Access】Accessから、MySQLへ ODBC接続する(DSNを使うパターン)。

(追記)
で、一見落着したと思っていたのですが、
VBAから更新しようとすると(何故か上書きする場合のみ)、
今度はプロセス停止エラーで更新できません。。。

Access-MySQLプロセス停止エラー
(メッセージ)
実行時エラー3197
「ほかのユーザーが同じデータに対して同時に更新を試みているので、
プロセスが停止しました。」

また、Domcmd.RunSQLで実行すると、ロック違反のエラーが表示されます。

で、この問題はというとODBCの設定で解決できました。
以下のサイトが非常に参考になります。
MySQLにODBCを使ってAccessで接続したときのエラー

解決方法は、詳細オプションの「Rettrun Mattched rows instead of affected rows」に
チェックをいれること。これで正常に更新できるようになりました。
ちなみにmdbを再起動する必要があります。

【参考 Access-MySQLのオプション設定関連のブログエントリ】
MySQL - UPDATE時の更新件数
MySQL ODBCの設定について
パフォーマンスが悪いとのこと(解決には至らず)
Access から ODBC 経由で MySQL に接続 - BitWalker
[Google PR]

Twitterはじめました。プラプラ | Twitter

<< 【iOSアプリ】素敵!あのロードランナーがiPhone、iPadで遊べます。
【iOSアプリ】パチスロアプリを探すなら「SLOT-APP-GELION(スロットアプゲリオン)」で決まり。 >>

[関連エントリ 最新5]

[Google PR]


[最新エントリ 5]

>>トップページ
人気カテゴリ:AccessTips SQLServer CakePHP iPad
過去ログ(全記事一覧)

コメント
コメントする(お気軽にどうぞ)









この記事のトラックバックURL
トラックバック
カテゴリー
プロフィール
お問い合わせ
Powered by NINJA TOOLS
links
recent comment
  • 【Access】vbaでhmacが正しく計算できた!!
    まさ (06/01)
  • 【Access】AccessReportMailメール送信時のポートを25から587へ
    わら (05/31)
  • 【SQLServer】超シンプル!再帰CTE(共通テーブル式)で連続データを作成する。
    sazi (09/08)
  • 【あまっちゃお】Amazon商品検索「あまっちゃお」プロジェクト始動。Ver00-06-00 β
    カメちゃん (07/31)
  • 【Access】あれ?DoCmd.RunCommand acCmdSaveRecordの内部仕様が変わった?
    花姉 (03/17)
  • 【Access】実行中のmdb(自分自身)をバックアップコピーする方法。
    亀 (02/06)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    管理人 (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    あ (01/31)
  • 【雑記】Amazonでの注文時、TMGさん発送にご注意を。納期を守れない可能性あり!
    K (11/13)
  • 【VAIOP】VaioXと両持ちできるものすっっごくマニアックなケース。当たり前ですが在庫限り。(笑)
    管理人 (08/04)
recent trackback
  • 【Access】2003安全でない式がブロックされていませんとセキュリティーレベル。
    awgs Foundry (10/29)
  • 【VAIOtypeP】液晶保護シートは、新車のカバーではない。レイアウト社液晶/天板保護フィルムセットRT-VP1FS1
    XMLがキライ。 (04/09)
  • Vistaから、LinkStation(NAS)にアクセスできません。
    そのほかいろいろ (09/06)