φ(..) ビボ~6 φ(..)

主にAccess、VBAに関する備忘録

mysqldump: Got error: 23: Out of resources when opening file

mysqldump: Got error: 23: Out of resources when opening file './hogehoge/hogehoge.MYD' (Errcode: 24) when using LOCK TABLES

バックアップ中にこのようなエラーが出る場合、--single-transaction オプションを付けてみる。

mysqldump --single-transaction -unanigashi -phonyarara dbnantoka > nantoka.bak

※my.cnfの[mysqld_safe]に、open_files_limitの値を大きくするなどの方法もあるらしいが試してない

MySQL :: Re: "ERROR 23: Out of resources when opening "
MySQL Out of resources when opening file | HostOnNet.com

ほかのユーザーが同じデータに対して同時に変更を試みているので、プロセスが停止しました。

ODBCがデータソースになっているフォームで変更・削除をしようとすると表題のメッセージが出る場合、
最適化/修復では解決しない場合に疑うこと。

bit型(Access側ではYes/No型)フィールドにNULLが入っていないかどうか。

  • AccessODBCリンクでテーブルを確認しても、値がNULLのYes/No型フィールドには自動的にNoが補填されており、確認はできないのが盲点である。従って、サーバー側ツール(ManagementStudioなど)で確認しなければならない。
  • Accessデータベースからの移行時、単純にエクスポートでテーブル作成の手間を惜しむと、Yes/No型のフィールドが NULLを許可するbit型となり、新規にレコード追加するときにモジュールやクエリーで値をセットしない限りNULLのまま追加されてしまうので注意。

ファイルDSNでRefreshLinkする時のパスワードの扱い

tbf.Connect = "FILEDSN=" & strDSNPath _
                & ";Uid=" & strUID _
                & ";Pwd=" & strPwd
tbf.RefreshLink

Connectにパスワードを記載していても実行後のリンクテーブルはパスワードを要求してくる。

tbf.Connect = "FILEDSN=" & strDSNPath _
                & ";Uid=" & strUID _
                & ";Pwd=" & strPwd

'********** ↓ 追 加 ↓ ********************************
tbf.Attributes = dbAttachSavePWD
'*****************************************************

tbf.RefreshLink

[参考]
AccessでSQLServerへのリンクテーブルを作成する - ☆彡群馬県高崎市のITシステムアドバイザーの日常

0x00000d1 ブルースクリーン STOPエラー

DataAdapter(DataTable)でレコードの更新をするサンプル

        Using cn As New SqlConnection(mConnectionString)
            cn.Open()

            Using cmd As New SqlCommand
                cmd.Connection = cn

                Dim SQL As New StringBuilder

                'INDEX列を含むコマンド文字列でないとダメかも...
                SQL.Append("SELECT * FROM TABLE_A")
                SQL.Append(" WHERE FLG_2 = @PARA1")
                SQL.Append(" ORDER BY FLD_1")

                cmd.CommandText = SQL.ToString

                cmd.Parameters.AddWithValue("@PARA1", 1)
                
                Using ad As New SqlDataAdapter(cmd)

                    '****↓必要↓****
                    ad.MissingSchemaAction = MissingSchemaAction.AddWithKey
                    
                    Dim bd As New SqlCommandBuilder(ad)
                    '****↑必要↑****

                    Dim tb As New DataTable

                    Try
                        ad.Fill(tb)

                        For i As Integer = 0 To tb.Rows.Count - 1
                            tb.Rows(i)("FLD_3") = "値"
                        Next i

                        ad.Update(tb)

                    Catch ex As Exception
                        MessageBox.Show(ex.Message, "エラー")
                    End Try

                End Using

            End Using
        End Using

MissingSchemaAction 列挙体 (System.Data)

ACC2000プロジェクト(.adp) のストアドプロシージャすべてに 「.1」が付く

Officeのサービスパックが適用されていないために起こる

バリアント型でない変数に Null 値を代入しようとしました。

[現象]

値要求:いいえ」のフィールドであるのに、「バリアント型でない変数に Null 値を代入しようとしました。」とエラーが出る。

[再現]

  1. 「値要求:はい」のフィールドを持つ、ODBCリンクのテーブルを開く
  2. 名前を付けて保存
  3. 「値要求:はい」のフィールドを「値要求:いいえ」に変更し、保存
  4. フィールドをブランクにしようとするとエラーが出る

[対策]

  1. テーブルデザイナーで、該当フィールドを切り取り
  2. 貼り付け

ACCESSのテーブルデザイナーから操作できない秘密のプロパティがあるということでしょうか~